:root{--portfolio-body-font: "Mansalva", cursive;--readable-prose-max-width: min(65ch, 100%);--readable-line-height: 1.68;--readable-body-color: #454545;font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light;color:#000000de;background-color:#fff;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;padding:0;width:100vw;height:100vh;overflow:hidden}html{width:100%;height:100%;overflow:hidden}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}@font-face{font-family:Lufga;src:url(/assets/LufgaRegular-DxIVXNDB.ttf) format("truetype");font-weight:400;font-style:normal}.navbar{position:absolute;top:0;left:0;right:0;display:flex;justify-content:center;align-items:center;background:#ffffffe6;border-bottom:1px solid rgba(0,0,0,.1);padding:26px 0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:1000;pointer-events:auto}.navbar-content{max-width:1440px;width:100%;margin:0 auto;display:flex;justify-content:space-between;align-items:center;padding:0 60px}.navbar-logo{display:flex;align-items:center}.navbar-logo img{height:32px;width:auto;display:block}.navbar-links{display:flex;gap:60px;align-items:center}.navbar-links a{font-family:Lufga,sans-serif;font-size:16px;font-weight:400;color:#000;text-decoration:none;text-transform:uppercase;cursor:pointer;user-select:text;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;position:relative;padding-bottom:1px}.navbar-links a:after{content:"";position:absolute;bottom:0;left:0;width:0;height:2px;background-color:#d01e22;transition:width .3s ease}.navbar-links a:hover:after{width:100%}@media(max-width:768px){.navbar{padding:20px 0}.navbar-content{padding:0 30px}.navbar-logo img{height:28px}.navbar-links{gap:24px}.navbar-links a{font-size:16px}}@media(max-width:480px){.navbar{padding:16px 0}.navbar-content{padding:0 20px}.navbar-logo img{height:24px}.navbar-links{gap:16px}.navbar-links a{font-size:14px}}@media(max-width:360px){.navbar{padding:14px 0}.navbar-content{padding:0 16px}.navbar-links{gap:12px}.navbar-links a{font-size:12px}}:root.dark-mode .navbar{background:#1e1e1ee6;border-bottom:1px solid rgba(255,255,255,.1)}:root.dark-mode .navbar-links a{color:#fff}.font-buddy{position:fixed;z-index:999;left:max(12px,env(safe-area-inset-left));bottom:env(safe-area-inset-bottom,0px);max-width:min(300px,calc(100vw - 24px));pointer-events:none;transform:translate3d(0,calc(100% + 28px),0);opacity:0;transition:transform .65s cubic-bezier(.22,1,.36,1),opacity .5s ease;will-change:transform,opacity}.font-buddy.font-buddy--visible{transform:translateZ(0);opacity:1;pointer-events:auto}@media(prefers-reduced-motion:reduce){.font-buddy{transition:opacity .35s ease;transform:none}.font-buddy:not(.font-buddy--visible){opacity:0;pointer-events:none}.font-buddy.font-buddy--visible{opacity:1;pointer-events:auto}}.font-buddy-inner{display:flex;align-items:flex-end;gap:8px;pointer-events:auto;filter:drop-shadow(0 4px 14px rgba(0,0,0,.12));line-height:0}:root.dark-mode .font-buddy-inner{filter:drop-shadow(0 4px 18px rgba(0,0,0,.45))}.font-buddy-character{width:64px;height:auto;flex-shrink:0;object-fit:contain;object-position:bottom center;-webkit-user-select:none;user-select:none;pointer-events:none;align-self:flex-end;display:block;margin-bottom:0}.font-buddy-character--mobile{display:none}.font-buddy-bubble{position:relative;line-height:normal;background:#ffffffeb;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(0,0,0,.12);border-radius:16px 16px 0 0;padding:10px 12px 12px;flex:1;min-width:0}:root.dark-mode .font-buddy-bubble{background:#242424f0;border-color:#ffffff1f}.font-buddy-dismiss{position:absolute;top:4px;right:6px;width:28px;height:28px;border:none;background:transparent;color:#00000073;font-size:20px;line-height:1;cursor:pointer;border-radius:8px;display:flex;align-items:center;justify-content:center;padding:0}.font-buddy-dismiss:hover{background:#0000000f;color:#000000bf}:root.dark-mode .font-buddy-dismiss{color:#ffffff80}:root.dark-mode .font-buddy-dismiss:hover{background:#ffffff14;color:#ffffffd9}.font-buddy-text{margin:0 24px 10px 0;font-family:system-ui,-apple-system,sans-serif;font-size:12.5px;line-height:1.45;color:#000000d1}:root.dark-mode .font-buddy-text{color:#ffffffe0}.font-buddy-cta{font-family:system-ui,-apple-system,sans-serif;font-size:12px;font-weight:600;padding:7px 14px;border-radius:999px;border:1px solid rgba(208,30,34,.45);background:#d01e2214;color:#b0181c;cursor:pointer;width:100%;transition:background .2s,transform .15s}.font-buddy-cta:hover{background:#d01e2224;transform:translateY(-1px)}:root.dark-mode .font-buddy-cta{border-color:#fb923c8c;background:#fb923c1f;color:#fdba74}:root.dark-mode .font-buddy-cta:hover{background:#fb923c33}@media(max-width:768px){.font-buddy{left:auto;right:max(10px,env(safe-area-inset-right,0px));bottom:auto;top:calc(env(safe-area-inset-top,0px) + 52px);max-width:min(260px,calc(100vw - 20px));z-index:1001;transform:translate3d(0,calc(-100% - 24px),0)}.font-buddy.font-buddy--visible{transform:translateZ(0)}.font-buddy-inner{flex-direction:column;align-items:flex-end;gap:6px}.font-buddy-character--desktop{display:none}.font-buddy-character--mobile{display:block;width:88px;max-width:28vw;height:auto;align-self:flex-end;object-fit:contain;object-position:top right}.font-buddy-bubble{border-radius:14px;flex:none;width:100%;max-width:260px;padding:10px 12px 12px}.font-buddy-text{font-size:12px}}@media(max-width:768px)and (prefers-reduced-motion:reduce){.font-buddy,.font-buddy.font-buddy--visible{transform:none!important}.font-buddy:not(.font-buddy--visible){opacity:0;pointer-events:none}.font-buddy.font-buddy--visible{opacity:1;pointer-events:auto}}@media(max-width:480px){.font-buddy{top:calc(env(safe-area-inset-top,0px) + 48px);right:max(8px,env(safe-area-inset-right,0px));max-width:min(240px,calc(100vw - 16px))}.font-buddy-character--mobile{width:76px}}@media(max-width:520px)and (min-width:769px){.font-buddy{bottom:env(safe-area-inset-bottom,0px);max-width:min(260px,calc(100vw - 20px))}.font-buddy-character--desktop{width:52px}.font-buddy-text{font-size:12px}}.canvas-container{width:100vw;height:100vh;overflow:hidden;position:relative;background:#fff;cursor:default;-webkit-user-select:none;user-select:none}.canvas-viewport{width:100%;height:100%;position:relative;overflow:hidden;touch-action:none;-ms-touch-action:none}.canvas-content{position:absolute;top:0;left:0;will-change:transform}.canvas-content:before{content:"";position:absolute;top:-3000px;left:-5000px;width:15000px;height:17000px;background-image:linear-gradient(rgba(0,0,0,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(0,0,0,.05) 1px,transparent 1px);background-size:50px 50px;pointer-events:none;z-index:-1}.canvas-boundary-text{position:absolute;font-family:Lufga,sans-serif;font-size:16px;font-weight:400;color:#00000080;pointer-events:none;-webkit-user-select:none;user-select:none;white-space:nowrap;z-index:100;text-align:center}.canvas-boundary-top{top:-3000px;left:-5000px;width:15000px;height:0;position:absolute}.canvas-boundary-top:before{content:"";position:absolute;top:0;left:0;width:15000px;height:100px;background:repeating-linear-gradient(45deg,transparent,transparent 10px,rgba(0,0,0,.2) 10px,rgba(0,0,0,.2) 20px);pointer-events:none;z-index:0}:root.dark-mode .canvas-boundary-text{color:#fff9}:root.dark-mode .canvas-boundary-top{background:linear-gradient(to bottom,#1a1a1af2,#1a1a1acc),repeating-linear-gradient(45deg,transparent,transparent 10px,rgba(255,255,255,.15) 10px,rgba(255,255,255,.15) 20px);border-bottom-color:#fff3}:root.dark-mode .canvas-boundary-top:before{background:repeating-linear-gradient(45deg,transparent,transparent 10px,rgba(255,255,255,.2) 10px,rgba(255,255,255,.2) 20px)}.canvas-instructions{position:absolute;bottom:20px;left:20px;background:#ffffffe6;border:1px solid rgba(0,0,0,.1);border-radius:8px;padding:12px 16px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 4px 12px #0000001a}.canvas-instructions p{margin:0;color:#000000b3;font-size:12px;font-family:inherit}.canvas-container *{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.canvas-container .welcome-text,.canvas-container .navbar-links a{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.canvas-container .about-page,.canvas-container .about-page *,.canvas-container .contact-page,.canvas-container .contact-page *,.canvas-container .work-page,.canvas-container .work-page *,.canvas-container .testimonials-page,.canvas-container .testimonials-page *{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;pointer-events:auto}:root.dark-mode .canvas-container{background:#1a1a1a}:root.dark-mode .canvas-content:before{background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 1px)}:root.dark-mode .canvas-instructions{background:#1e1e1ee6;border:1px solid rgba(255,255,255,.1)}:root.dark-mode .canvas-instructions p{color:#ffffffb3}.canvas-islands-wrapper{display:contents}.canvas-control-island{position:fixed;bottom:30px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:0;padding:12px 16px;background:#ffffff4d;backdrop-filter:blur(10px) saturate(180%);-webkit-backdrop-filter:blur(10px) saturate(180%);border:1px solid rgba(0,0,0,.2);border-radius:50px;z-index:1000;pointer-events:auto;cursor:default;transition:all .3s ease;overflow:hidden;max-width:min(96vw,520px)}.canvas-island-mobile-home,.canvas-island-mobile-zoom,.canvas-island-mobile-tools{justify-content:center}.island-secondary-row--mobile-split{gap:10px}.canvas-control-island.font-picker-open{overflow:visible;z-index:1100;border-radius:24px}.island-main-row{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:flex-start;gap:12px;width:100%}.island-expanded-cluster{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;gap:12px;flex:1;min-width:0}.island-secondary-row{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;gap:12px;flex-shrink:0}.canvas-control-island.collapsed{padding:8px 16px;gap:0}.canvas-control-island.collapsed .canvas-zoom-controls-island-desktop{width:0;opacity:0;overflow:hidden;gap:0}.canvas-control-island.collapsed .zoom-indicator{display:none}.canvas-control-island.collapsed .island-toggle-btn{margin-right:0}.canvas-control-island.collapsed .island-expanded-cluster{flex-direction:row;align-items:center}.island-divider{width:1px;height:32px;background:#0003;margin:0 4px;flex-shrink:0}:root.dark-mode .island-divider{background:#fff3}.island-toggle-btn{width:44px;height:44px;background:transparent;border:none;border-radius:38px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#000c;transition:all .2s ease;padding:0;margin-right:8px;flex-shrink:0}.island-toggle-btn:hover{background:#0000001a;transform:scale(1.05)}:root.dark-mode .island-toggle-btn{color:#ffffffe6}:root.dark-mode .island-toggle-btn:hover{background:#ffffff1a}.canvas-control-island.expanded{padding:12px 16px;gap:12px}:root.dark-mode .canvas-control-island{background:#1e1e1e4d;border:1px solid rgba(255,255,255,.2)}.canvas-zoom-controls{display:flex;flex-direction:row;gap:8px;align-items:center}.zoom-control-btn{width:42px;height:42px;min-width:52px;min-height:52px;background:transparent;border:none;border-radius:38px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;color:#000c}.zoom-control-btn svg{width:20px!important;height:20px!important;flex-shrink:0}.zoom-control-btn:hover{background:#0000001a;transform:scale(1.05)}:root.dark-mode .zoom-control-btn{background:#1e1e1e4d;border:1px solid rgba(255,255,255,.2);color:#fff}:root.dark-mode .zoom-control-btn:hover{background:#1e1e1e66;border-color:#d01e22}.canvas-island-mobile-zoom-inner{gap:0;border-radius:999px;overflow:hidden}.canvas-island-mobile-zoom .zoom-control-btn{border:none!important;border-radius:0;background:transparent;transform:none}.canvas-island-mobile-zoom .zoom-control-btn:hover,.canvas-island-mobile-zoom .zoom-control-btn:focus-visible{outline:none;border:none!important;transform:none}.canvas-island-mobile-zoom .zoom-control-btn:hover{background:#00000014}:root.dark-mode .canvas-island-mobile-zoom .zoom-control-btn{background:transparent;border:none!important}:root.dark-mode .canvas-island-mobile-zoom .zoom-control-btn:hover{background:#ffffff1a;border:none!important;border-color:transparent!important}.canvas-island-mobile-zoom .zoom-control-btn:active{border:none!important}:root.dark-mode .canvas-island-mobile-zoom .zoom-control-btn:active{border:none!important;border-color:transparent!important}.canvas-island-mobile-zoom .zoom-control-btn+.zoom-control-btn{border-left:1px solid rgba(0,0,0,.12)}:root.dark-mode .canvas-island-mobile-zoom .zoom-control-btn+.zoom-control-btn{border-left-color:#ffffff2e}.zoom-indicator{min-width:50px;height:32px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:#000c;margin-left:4px}.dark-mode-toggle-btn{width:44px;height:44px;background:transparent;border:none;border-radius:38px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#000c;transition:all .2s ease;padding:0}.dark-mode-toggle-btn:hover{background:#0000001a;transform:scale(1.05)}:root.dark-mode .dark-mode-toggle-btn{color:#ffffffe6}:root.dark-mode .dark-mode-toggle-btn:hover{background:#ffffff1a}.reading-font-toggle-btn{width:44px;height:44px;background:transparent;border:none;border-radius:38px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#000c;transition:all .2s ease;padding:0;flex-shrink:0}.reading-font-toggle-btn:hover{background:#0000001a;transform:scale(1.05)}.reading-font-toggle-icon{font-family:system-ui,-apple-system,sans-serif;font-size:15px;font-weight:700;letter-spacing:-.02em;line-height:1}:root.dark-mode .reading-font-toggle-btn{color:#ffffffe6}:root.dark-mode .reading-font-toggle-btn:hover{background:#ffffff1a}.reading-font-dropdown-root{position:relative;flex-shrink:0;z-index:2}.reading-font-dropdown{position:absolute;bottom:calc(100% + 10px);left:50%;transform:translate(-50%);min-width:min(240px,calc(100vw - 48px));max-width:min(280px,calc(100vw - 32px));max-height:min(42vh,300px);display:flex;flex-direction:column;padding:8px 0;background:#fffffff5;backdrop-filter:blur(14px) saturate(160%);-webkit-backdrop-filter:blur(14px) saturate(160%);border:1px solid rgba(0,0,0,.12);border-radius:14px;box-shadow:0 -8px 28px #0000001f,0 4px 16px #0000000f;overflow:hidden}:root.dark-mode .reading-font-dropdown{background:#222222f7;border-color:#ffffff24;box-shadow:0 -10px 32px #00000073,0 4px 20px #0000004d}.reading-font-dropdown-label{font-family:system-ui,-apple-system,sans-serif;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.07em;color:#00000073;padding:4px 14px 8px;flex-shrink:0}:root.dark-mode .reading-font-dropdown-label{color:#ffffff73}.reading-font-dropdown-list{list-style:none;margin:0;padding:0 6px 6px;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}.reading-font-dropdown-item{margin:0;padding:0}.reading-font-dropdown-option{display:block;width:100%;text-align:left;font-size:13px;font-weight:500;padding:10px 12px;margin:2px 0;border:none;border-radius:10px;background:transparent;color:#000000e0;cursor:pointer;transition:background .12s ease;line-height:1.25}.reading-font-dropdown-option:hover{background:#0000000f}.reading-font-dropdown-option.active{background:#d01e221f;box-shadow:inset 0 0 0 1px #d01e2233}:root.dark-mode .reading-font-dropdown-option{color:#ffffffeb}:root.dark-mode .reading-font-dropdown-option:hover{background:#ffffff14}:root.dark-mode .reading-font-dropdown-option.active{background:#fb923c24;box-shadow:inset 0 0 0 1px #fb923c47}:root.dark-mode .zoom-indicator{color:#ffffffe6}.island-desktop-only{display:flex}.island-mobile-only{display:none!important}@media(max-width:768px){.island-desktop-only{display:none!important}.island-mobile-only{display:flex!important}.canvas-zoom-controls-island-desktop{display:none!important}.canvas-island-mobile-zoom{position:relative;overflow:visible;flex-direction:column;align-items:stretch}.canvas-island-mobile-zoom-inner{display:flex;flex-direction:row;align-items:stretch;justify-content:center}.canvas-mobile-zoom-percent-bubble{position:absolute;bottom:calc(100% + 8px);right:0;left:0;margin:0 auto;width:max-content;max-width:calc(100vw - 48px);min-width:48px;height:30px;padding:0 10px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:#000c;background:#ffffff4d;backdrop-filter:blur(10px) saturate(180%);-webkit-backdrop-filter:blur(10px) saturate(180%);border:1px solid rgba(0,0,0,.2);border-radius:50px;opacity:0;transform:translateY(6px) scale(.96);pointer-events:none;transition:opacity .22s ease,transform .22s ease}.canvas-mobile-zoom-percent-bubble--visible{opacity:1;transform:translateY(0) scale(1)}:root.dark-mode .canvas-mobile-zoom-percent-bubble{color:#ffffffe6;background:#1e1e1e4d;border-color:#fff3}.canvas-instructions{display:none}.canvas-islands-wrapper{display:flex;flex-direction:row;align-items:flex-end;justify-content:center;gap:10px;position:fixed;bottom:max(20px,env(safe-area-inset-bottom,0px));left:50%;transform:translate(-50%);z-index:1000;pointer-events:none;width:max-content;max-width:calc(100vw - 24px)}.canvas-islands-wrapper>.canvas-control-island{position:static;transform:none;left:auto;bottom:auto;margin:0;pointer-events:auto;flex-shrink:0}.canvas-control-island{padding:10px 12px;gap:6px;border-radius:22px}.canvas-island-mobile-home,.canvas-island-mobile-zoom{padding:8px 10px;max-width:none}.canvas-island-mobile-tools{padding:8px 12px;max-width:none}.canvas-control-island.font-picker-open{padding-top:12px}.canvas-island-mobile-tools.font-picker-open{z-index:1100}.canvas-island-mobile-tools .reading-font-dropdown{position:fixed;left:50%;right:auto;top:auto;bottom:calc(96px + env(safe-area-inset-bottom,0px));transform:translate(-50%);width:min(280px,calc(100vw - 24px));min-width:0;z-index:1200;box-sizing:border-box}.island-main-row{align-items:center;gap:8px}.island-expanded-cluster{flex-direction:row;align-items:center;flex:1;min-width:0;gap:8px}.island-secondary-row{justify-content:flex-start;flex:1;min-width:0;gap:8px}.island-secondary-row--mobile-split{flex:none;width:auto;gap:10px}.island-toggle-btn{width:40px;height:40px;margin-right:0;flex-shrink:0}.zoom-control-btn,.dark-mode-toggle-btn,.reading-font-toggle-btn,.canvas-island-mobile-zoom .zoom-control-btn{width:40px;height:40px;min-width:40px;min-height:40px}.zoom-indicator{min-width:44px;height:28px;font-size:11px;margin-left:0;flex-shrink:0}.zoom-control-btn svg,.dark-mode-toggle-btn svg{width:20px!important;height:20px!important}.canvas-island-mobile-zoom .zoom-control-btn svg{width:20px!important;height:20px!important}.island-divider{height:28px;margin:0 2px 0 0}}@media(max-width:480px){.canvas-islands-wrapper{bottom:max(16px,env(safe-area-inset-bottom,0px));gap:8px}.canvas-control-island{padding:8px 10px;gap:4px;border-radius:20px}.canvas-island-mobile-home,.canvas-island-mobile-zoom{padding:6px 8px}.canvas-island-mobile-tools{padding:6px 10px}.island-expanded-cluster,.island-secondary-row{gap:6px}.island-toggle-btn{width:36px;height:36px;margin-right:0}.zoom-control-btn,.dark-mode-toggle-btn,.reading-font-toggle-btn{width:36px;height:36px;min-width:36px;min-height:36px}.zoom-indicator{min-width:38px;height:26px;font-size:10px;padding:0 4px}.zoom-control-btn svg,.dark-mode-toggle-btn svg{width:18px!important;height:18px!important}.canvas-mobile-zoom-percent-bubble{min-width:44px;height:28px;font-size:11px;padding:0 8px;bottom:calc(100% + 6px)}.canvas-island-mobile-zoom .zoom-control-btn{width:36px;height:36px;min-width:36px;min-height:36px}.canvas-island-mobile-zoom .zoom-control-btn svg{width:18px!important;height:18px!important}.island-divider{height:26px;margin:0 2px 0 0}}@media(max-width:360px){.canvas-islands-wrapper{bottom:max(12px,env(safe-area-inset-bottom,0px));gap:6px;max-width:calc(100vw - 16px)}.canvas-control-island{padding:8px;gap:3px;border-radius:18px}.canvas-island-mobile-home,.canvas-island-mobile-zoom{padding:5px 6px}.canvas-island-mobile-tools{padding:5px 8px}.island-toggle-btn{width:32px;height:32px;margin-right:0}.zoom-control-btn,.dark-mode-toggle-btn,.reading-font-toggle-btn{width:32px;height:32px;min-width:32px;min-height:32px}.zoom-indicator{min-width:34px;height:24px;font-size:9px;padding:0 2px}.zoom-control-btn svg,.dark-mode-toggle-btn svg{width:16px!important;height:16px!important}.canvas-mobile-zoom-percent-bubble{min-width:40px;height:26px;font-size:10px;padding:0 6px;bottom:calc(100% + 5px)}.canvas-island-mobile-zoom .zoom-control-btn{width:32px;height:32px;min-width:32px;min-height:32px}.canvas-island-mobile-zoom .zoom-control-btn svg{width:16px!important;height:16px!important}.island-divider{height:24px;margin:0 1px 0 0}}#root{width:100vw;height:100vh;margin:0;padding:0;overflow:hidden}.canvas-sections-wrapper{position:relative;width:300vw;height:200vh}.work-page-section{position:absolute;top:0;left:-100vw;width:100vw;height:100vh}.testimonials-section{position:absolute;top:calc(-100vh - min(52vh,460px));left:0;width:100vw;height:100vh;overflow:visible;z-index:0}@media(max-width:768px){.testimonials-section{top:calc(-100vh - min(100vh,840px));height:100vh}.canvas-content-wrapper{align-items:flex-end;justify-content:center;padding-top:24px;padding-bottom:0;transform:none}}.home-section{position:absolute;top:0;left:0;width:100vw;height:100vh}.hero-plane-wrap{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none;overflow:hidden;z-index:1}.hero-plane{position:absolute;width:clamp(40px,5.5vw,72px);height:auto;left:-16vw;top:0;transform:translateZ(0) rotate(12deg);opacity:0;filter:drop-shadow(0 1px 2px rgba(0,0,0,.8)) drop-shadow(0 6px 12px rgba(0,0,0,.28));will-change:transform;animation:heroPlaneFly 13s linear infinite}@keyframes heroPlaneFly{0%{transform:translate3d(0,40vh,0) rotate(12deg) scale(.5);opacity:0}8%{transform:translate3d(10.5vw,36.6vh,0) rotate(12deg) scale(1.2);opacity:1}18%{transform:translate3d(23.8vw,32.4vh,0) rotate(12deg) scale(1);opacity:1}94%{transform:translate3d(124vw,.6vh,0) rotate(12deg) scale(1);opacity:1}99%{transform:translate3d(136vw,-3.2vh,0) rotate(12deg) scale(.74);opacity:.8}to{transform:translate3d(142vw,-5vh,0) rotate(12deg) scale(.45);opacity:0}}.canvas-content-wrapper{position:absolute;top:0;left:0;width:100vw;height:100vh;display:flex;align-items:flex-end;justify-content:center;pointer-events:none}.contact-page-section{position:absolute;top:100vh;left:0;width:100vw;height:100vh}.about-page-section{position:absolute;top:0;left:100vw;width:100vw;height:100vh}.content-container{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:20px}.pan-hint-chip{background:#0000000d;border:1.5px solid rgba(251,146,60,.6);border-radius:999px;padding:8px 16px;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 2px 4px #0000000d;pointer-events:none;-webkit-user-select:none;user-select:none;margin-bottom:8px;display:inline-block;animation:fadeInBounce .6s ease-out;opacity:1}@keyframes fadeInBounce{0%{opacity:0;transform:translateY(-10px) scale(.95)}60%{transform:translateY(2px) scale(1.02)}to{opacity:1;transform:translateY(0) scale(1)}}.pan-hint-chip p{margin:0;color:#000000b3;font-size:13px;font-family:Lufga,sans-serif;font-weight:400;white-space:nowrap}:root.dark-mode .pan-hint-chip{background:#ffffff0d;border-color:#fb923cb3;box-shadow:0 2px 4px #0003}:root.dark-mode .pan-hint-chip p{color:#ffffffb3}@media(max-width:768px){.pan-hint-chip{display:none}}.welcome-text{font-family:var(--portfolio-body-font);font-size:4rem;font-weight:400;color:#000;margin:0;text-align:center;user-select:text;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;pointer-events:auto;line-height:1.2;cursor:text;padding:0 20px;max-width:100%;word-wrap:break-word;-webkit-hyphens:auto;hyphens:auto}.character-section{display:flex;align-items:flex-end;justify-content:center;gap:40px;width:100%;position:relative}.character-wrapper{position:relative;display:flex;align-items:center;justify-content:center}.character-image{width:min(60vw,60vh);max-width:600px;max-height:60vh;height:auto;display:block;-webkit-user-select:none;user-select:none;pointer-events:none;object-fit:contain}.thats-me-section{position:absolute;top:20px;left:0;display:flex;flex-direction:column;align-items:flex-end;pointer-events:none}.thats-me-text{display:flex;align-items:center;gap:8px;font-family:var(--portfolio-body-font);font-size:1.8rem;color:#000;margin-bottom:8px;margin-right:-10px}.thats-me-text span{user-select:text;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text}.smiley-icon{width:40px;height:auto;display:block}.me-arrow-icon{width:80px;height:auto;display:block;margin-right:20px}.home-section .work-section,.home-section .about-section{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;pointer-events:auto;cursor:pointer;transition:opacity .2s;margin-bottom:60px;gap:6px}.home-section .work-section{order:-1}.home-section .about-section{order:1}.home-section .work-section:hover,.home-section .about-section:hover{opacity:.7}.section-text{font-family:var(--portfolio-body-font);font-size:2.75rem;font-weight:400;color:#000;user-select:text;-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;white-space:nowrap;display:block;line-height:1;margin:0}.arrow-icon{width:230px;height:auto;display:block;-webkit-user-select:none;user-select:none;pointer-events:none;animation:arrowWiggle 2s ease-in-out 3;transform-origin:center;object-fit:contain;object-position:bottom center;flex-shrink:0}@keyframes arrowWiggle{0%,to{transform:rotate(0) translate(0)}25%{transform:rotate(-3deg) translate(-2px)}50%{transform:rotate(0) translate(0)}75%{transform:rotate(3deg) translate(2px)}}@media(max-width:1024px)and (min-width:769px){.thats-me-section{left:-30px;top:15px}.thats-me-text{font-size:1.5rem;margin-right:-15px}.smiley-icon{width:32px}.me-arrow-icon{width:70px}}@media(max-width:768px){.hero-plane{width:clamp(38px,12vw,58px);animation-duration:10.8s}.character-image{width:min(70vw,70vh);max-width:100%}.welcome-text{font-size:3rem;padding:0 16px}.character-section{gap:24px}.home-section .work-section,.home-section .about-section{margin-bottom:12px;gap:2px}.section-text{font-size:clamp(1.75rem,5.5vw,2.35rem);letter-spacing:-.02em}.arrow-icon{width:clamp(44px,12vw,56px);max-height:22px;margin-top:-2px}.thats-me-text{font-size:1.4rem}.smiley-icon{width:32px}.me-arrow-icon{width:60px}.thats-me-section{top:15px;left:-10px}}@media(max-width:480px){.hero-plane{width:clamp(34px,11vw,50px);animation-duration:9.6s}.canvas-content-wrapper{padding-top:20px;padding-bottom:0;transform:none}.character-image{width:min(80vw,80vh)}.welcome-text{font-size:2.5rem;padding:0 12px;line-height:1.3}.character-section{gap:16px;flex-wrap:wrap}.home-section .work-section,.home-section .about-section{position:absolute;bottom:calc(20vh + 20px);margin-bottom:0;gap:0}.home-section .work-section{left:20px;order:0}.home-section .about-section{right:20px;order:0}.section-text{font-size:clamp(1.65rem,5.2vw,2rem);letter-spacing:-.02em}.arrow-icon{width:clamp(40px,11vw,52px);max-height:20px;margin-top:-4px}.thats-me-text{font-size:1.2rem;margin-right:-5px}.smiley-icon{width:28px}.me-arrow-icon{width:50px}.thats-me-section{top:10px;left:-5px}}@media(max-width:360px){.welcome-text{font-size:2rem;padding:0 10px}.home-section .work-section{left:16px}.home-section .about-section{right:16px}.section-text{font-size:clamp(1.5rem,4.8vw,1.85rem)}.arrow-icon{width:clamp(36px,10vw,48px);max-height:18px;margin-top:-4px}.thats-me-text{font-size:1rem}.smiley-icon{width:24px}.me-arrow-icon{width:40px}.thats-me-section{top:8px;left:-5px}}:root.dark-mode .welcome-text{color:#fff}:root.dark-mode .section-text{color:#fff}:root.dark-mode .thats-me-text{color:#fff}:root.dark-mode .thats-me-text span{color:#fff}:root.dark-mode .arrow-icon{filter:invert(1) brightness(2)}:root.dark-mode .me-arrow-icon{filter:invert(1) brightness(2)}:root.dark-mode .smiley-icon{filter:invert(1) brightness(1.2)}@media(prefers-reduced-motion:reduce){.hero-plane{animation:none;left:12px;top:76px;transform:none;opacity:.9}}@font-face{font-family:Lufga;src:url(/assets/LufgaRegular-DxIVXNDB.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:Lufga;src:url(/assets/LufgaBold-D80OgmSm.ttf) format("truetype");font-weight:700;font-style:normal}.resume-page{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding:56px 0 40px;overflow-y:auto;overflow-x:hidden}.resume-controls{position:absolute;top:20px;right:20px;z-index:1000}.resume-page{position:relative}.resume-pdf-button{font-family:Lufga,sans-serif;font-size:.875rem;font-weight:400;padding:10px 20px;background:#000;color:#fff;border:none;border-radius:4px;cursor:pointer;transition:opacity .2s}.resume-pdf-button:hover{opacity:.8}:root.dark-mode .resume-pdf-button{background:#fff;color:#000}.resume-container{max-width:850px;width:100%;margin:0 auto;padding:22px 32px;background:#fff;font-family:Lufga,sans-serif;color:#000;letter-spacing:.02em;word-spacing:.05em}.resume-header{display:flex;align-items:flex-end;gap:24px;margin-bottom:48px}.resume-logo{flex-shrink:0;width:58px;height:58px;display:flex;align-items:center;justify-content:center;align-self:flex-end}.resume-logo img{width:100%;height:100%;object-fit:contain;image-rendering:-webkit-optimize-contrast;image-rendering:crisp-edges}.resume-header-content{flex:1;min-width:0}.resume-name{font-family:Lufga,sans-serif;font-size:1.9375rem;font-weight:700;margin:0;letter-spacing:.04em;line-height:1.3}.resume-title{font-family:Lufga,sans-serif;font-size:.84375rem;font-weight:400;margin:.25rem 0 0;color:#5e5e5e;line-height:1.5;letter-spacing:.02em}.resume-header-tagline{font-family:Lufga,sans-serif;font-size:.71875rem;font-weight:400;margin:.25rem 0 0;color:#5e5e5e;line-height:1.4;letter-spacing:.02em;max-width:20rem}.resume-section--summary{margin-bottom:36px}.resume-profile-text{font-family:Lufga,sans-serif;font-size:.84375rem;font-weight:400;line-height:1.65;color:#5e5e5e;margin:0;letter-spacing:.02em}.resume-credibility{font-family:Lufga,sans-serif;font-size:.8125rem;font-weight:400;line-height:1.55;color:#000;margin:.65rem 0 0;letter-spacing:.02em}.resume-credibility-tagline{display:block;margin-top:.35rem;color:#5e5e5e;font-size:.78125rem;line-height:1.5;letter-spacing:.02em}.resume-bullets{font-family:Lufga,sans-serif;font-size:.84375rem;font-weight:400;line-height:1.55;color:#5e5e5e;margin:0;padding-left:1.15em;letter-spacing:.02em}.resume-bullets li{margin-bottom:.55em}.resume-bullets li:last-child{margin-bottom:0}.resume-bullet-anchor{display:block;color:#000;line-height:1.45;font-weight:400}.resume-bullet-anchor strong{font-weight:700}.resume-bullet-body{display:block;margin-top:.2em;padding-left:.65em;border-left:2px solid #e8e8e8;line-height:1.55;color:#5e5e5e}.resume-contact{flex-shrink:0;text-align:right}.resume-contact p{font-family:Lufga,sans-serif;font-size:.84375rem;font-weight:400;margin:0 0 4px;color:#000;line-height:1.8;letter-spacing:.02em}.resume-contact p:last-child{margin-bottom:0}.resume-link{color:#000;text-decoration:none;transition:opacity .2s;letter-spacing:.02em}.resume-link:hover{opacity:.7;text-decoration:underline}.resume-section{margin-bottom:42px}.resume-section-title{font-family:Lufga,sans-serif;font-size:.90625rem;font-weight:700;margin:0 0 14px;letter-spacing:.02em;text-transform:none;color:#000;position:relative;padding-bottom:10px;display:block}.resume-section-divider{position:absolute;bottom:0;left:0;width:100%;height:1px;background-image:url("data:image/svg+xml,%3Csvg width='8' height='1' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='2' height='1' fill='%23000'/%3E%3C/svg%3E");background-repeat:repeat-x;background-size:8px 1px}.resume-section-content{margin-top:20px}.resume-item{margin-bottom:28px}.resume-item:last-child{margin-bottom:0}.resume-item-header{display:flex;align-items:baseline;gap:12px;margin-bottom:8px;flex-wrap:wrap}.resume-item-company-date{font-family:Lufga,sans-serif;font-size:.96875rem;font-weight:400;color:#5e5e5e;margin:0 0 12px;letter-spacing:.02em}.resume-item-title{font-family:Lufga,sans-serif;font-size:.96875rem;font-weight:700;margin:0;color:#000;letter-spacing:.02em}.resume-item-company{font-family:Lufga,sans-serif;font-size:.96875rem;font-weight:400;color:#000}.resume-item-date{font-family:Lufga,sans-serif;font-size:.96875rem;font-weight:400;color:#5e5e5e;margin-left:auto}.resume-item-description{font-family:Lufga,sans-serif;font-size:.84375rem;font-weight:400;line-height:1.8;color:#5e5e5e;margin:0 0 8px;padding-left:0;letter-spacing:.02em}.resume-item-description:last-child{margin-bottom:0}.resume-project-item{margin-bottom:0;margin-top:12px}.resume-project-item:last-child{margin-bottom:0}.resume-project-item .resume-project-name{font-family:Lufga,sans-serif;font-size:.90625rem;font-weight:400;display:block;margin-bottom:4px;color:#5e5e5e}.resume-project-heading{font-family:Lufga,sans-serif;font-size:.78125rem;font-weight:400;margin:16px 0 4px;color:#5e5e5e;letter-spacing:.02em}.resume-project-item .resume-project-description{margin-top:4px;margin-bottom:0;padding-left:0}.resume-skills-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:1.75rem;row-gap:1.15rem;align-items:start}.resume-skills-column{min-width:0}.resume-skills-category{font-family:Lufga,sans-serif;font-size:.75rem;font-weight:700;margin:0;padding-bottom:4px;color:#000;letter-spacing:.08em;text-transform:uppercase}.resume-skills-line{font-family:Lufga,sans-serif;font-size:.875rem;font-weight:400;margin:0;color:#000;line-height:1.58;letter-spacing:.02em;word-wrap:break-word}.resume-project{margin-bottom:16px}.resume-project:last-child{margin-bottom:0}.resume-project-title{font-family:Lufga,sans-serif;font-size:.96875rem;font-weight:700;margin:0 0 6px;color:#000;letter-spacing:.02em}.resume-project-description{font-family:Lufga,sans-serif;font-size:.84375rem;font-weight:400;line-height:1.8;color:#5e5e5e;margin:0;letter-spacing:.02em}.resume-project-line{font-family:Lufga,sans-serif;font-size:.84375rem;font-weight:400;line-height:1.55;color:#5e5e5e;margin:0 0 7px;letter-spacing:.02em}.resume-project-line:last-child{margin-bottom:0}.resume-education-line{font-family:Lufga,sans-serif;font-size:.84375rem;font-weight:400;line-height:1.5;margin:0;letter-spacing:.02em}.resume-education-line .resume-education-degree{font-weight:700;color:#000}.resume-education-line .resume-education-school{font-weight:400;color:#5e5e5e}.resume-education-sep{color:#5e5e5e;font-weight:400}.resume-projects-grid{display:grid;grid-template-columns:1fr 1fr;grid-auto-flow:row;column-gap:28px;row-gap:20px;align-items:start}.resume-projects-grid:has(>.resume-project:nth-child(3):last-child)>.resume-project:nth-child(3){grid-column:1 / -1}.resume-projects-grid .resume-project{margin-bottom:0}:root.dark-mode .resume-container{background:#1a1a1a;color:#fff}:root.dark-mode .resume-name,:root.dark-mode .resume-item-title,:root.dark-mode .resume-item-company,:root.dark-mode .resume-contact p,:root.dark-mode .resume-link,:root.dark-mode .resume-section-title,:root.dark-mode .resume-skills-category,:root.dark-mode .resume-skills-line,:root.dark-mode .resume-project-title,:root.dark-mode .resume-project-description,:root.dark-mode .resume-project-line,:root.dark-mode .resume-education-line .resume-education-degree,:root.dark-mode .resume-item-description,:root.dark-mode .resume-item-company-date,:root.dark-mode .resume-project-item .resume-project-name{color:#fffc}:root.dark-mode .resume-project-heading{color:#fffc}:root.dark-mode .resume-link{color:#fff}:root.dark-mode .resume-link:hover{opacity:.8}:root.dark-mode .resume-title,:root.dark-mode .resume-item-date,:root.dark-mode .resume-header-tagline,:root.dark-mode .resume-profile-text,:root.dark-mode .resume-bullets,:root.dark-mode .resume-education-line .resume-education-school,:root.dark-mode .resume-education-sep{color:#ffffffb3}:root.dark-mode .resume-credibility{color:#ffffffd9}:root.dark-mode .resume-credibility-tagline{color:#ffffffa6}:root.dark-mode .resume-bullet-anchor{color:#ffffffe6}:root.dark-mode .resume-bullet-body{color:#ffffffad;border-left-color:#fff3}:root.dark-mode .resume-section-divider{background-image:url("data:image/svg+xml,%3Csvg width='8' height='1' xmlns='http://www.w3.org/2000/svg'%3E%3Crect width='2' height='1' fill='%23fff'/%3E%3C/svg%3E")}:root.dark-mode .resume-logo img{filter:invert(1)}@media(max-width:768px){.resume-container{padding:20px 28px}.resume-header{flex-direction:column;align-items:flex-start;gap:16px}.resume-contact{text-align:left}.resume-name{font-size:2rem}.resume-skills-grid{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:1.5rem;row-gap:1.1rem}.resume-projects-grid{grid-template-columns:1fr;grid-template-rows:none;grid-auto-flow:row;row-gap:20px}.resume-controls{top:70px;right:20px}.resume-pdf-button{font-size:.75rem;padding:8px 16px}}@media(max-width:480px){.resume-container{padding:14px 16px}.resume-skills-grid{grid-template-columns:1fr;row-gap:16px}.resume-name{font-size:1.5rem}.resume-item-header{flex-direction:column;gap:4px}.resume-item-date{margin-left:0}}.resume-editor-page{min-height:100vh;display:grid;grid-template-columns:minmax(320px,420px) minmax(0,1fr);background:#f5f7fb;color:#0f172a}.resume-editor-panel{border-right:1px solid #dbe3f0;background:#fff;padding:1rem;overflow-y:auto;max-height:100vh}.resume-editor-title{margin:0;font-size:1.2rem}.resume-editor-subtitle{margin:.3rem 0 1rem;color:#64748b;font-size:.9rem}.resume-editor-download-button{width:100%;margin-bottom:1rem}.resume-editor-section{margin-bottom:1rem;padding-bottom:.8rem;border-bottom:1px solid #eef2f8}.resume-editor-section h2{margin:0 0 .6rem;font-size:.95rem}.resume-editor-subgroup{padding:.6rem;border:1px solid #e5e7eb;border-radius:8px;margin-bottom:.7rem}.resume-editor-section label{display:block;font-size:.8rem;color:#334155;margin-bottom:.55rem}.resume-editor-section input,.resume-editor-section textarea{width:100%;margin-top:.35rem;border:1px solid #cbd5e1;border-radius:6px;padding:.45rem .55rem;font-size:.86rem;font-family:inherit;background:#fff;color:#0f172a;resize:vertical}.resume-editor-input-error{border-color:#dc2626!important;background:#fff7f7!important}.resume-editor-error-text{display:block;margin-top:.25rem;font-size:.75rem;color:#b91c1c}.resume-editor-section textarea{min-height:96px}.resume-editor-secondary-button,.resume-editor-danger-button{border:1px solid #cbd5e1;border-radius:6px;background:#fff;padding:.45rem .65rem;font-size:.8rem;cursor:pointer}.resume-editor-secondary-button:hover{background:#f8fafc}.resume-editor-danger-button{border-color:#fecaca;color:#b91c1c}.resume-editor-danger-button:hover{background:#fff1f2}.resume-editor-preview{padding:1rem;overflow:auto;max-height:100vh}.resume-editor-preview .resume-container{margin:0 auto}@media(max-width:960px){.resume-editor-page{grid-template-columns:1fr}.resume-editor-panel,.resume-editor-preview{max-height:none}.resume-editor-panel{border-right:0;border-bottom:1px solid #dbe3f0}}
