:root{--background:#f5f2eb;--foreground:#3d3a36;--text:var(--foreground);--text-secondary:#6b6660;--accent:#c45a4a;--link:var(--foreground);--link-hover:#c45a4a;--color-background:var(--background);--color-foreground:var(--foreground);--color-cream:#f5f2eb;--color-cream-dark:#e8e4db;--color-ink:#3d3a36;--color-ink-light:#6b6660;--color-coral:#c45a4a;--color-light-orange:#e8a87c;--color-navy:#4a5a7a;--color-border:#d4d0c8;--contact-backdrop:rgba(61,58,54,.3);--contact-surface:color-mix(in srgb,var(--background) 84%,#fff 16%);--contact-panel:color-mix(in srgb,var(--background) 91%,#fff 9%);--contact-field:color-mix(in srgb,var(--background) 86%,#fff 14%);--contact-border:color-mix(in srgb,var(--color-border) 82%,#fff 18%);--contact-shadow:0 30px 90px rgba(37,35,32,.24);--font-satoshi:"Satoshi",system-ui,sans-serif;--color-sidebar-ring:var(--sidebar-ring);--color-sidebar-border:var(--sidebar-border);--color-sidebar-accent-foreground:var(--sidebar-accent-foreground);--color-sidebar-accent:var(--sidebar-accent);--color-sidebar-primary-foreground:var(--sidebar-primary-foreground);--color-sidebar-primary:var(--sidebar-primary);--color-sidebar-foreground:var(--sidebar-foreground);--color-sidebar:var(--sidebar)}html[data-theme=dark]{--background:#18181b;--foreground:#f4f4f5;--text:var(--foreground);--text-secondary:#bfbfc5;--accent:#e5846c;--link:var(--foreground);--link-hover:#ec9079;--color-border:#3a3a41;--contact-backdrop:rgba(0,0,0,.58);--contact-surface:#1f1f23;--contact-panel:#1a1a1e;--contact-field:#18181b;--contact-border:#3a3a41;--contact-shadow:0 30px 90px rgba(0,0,0,.46)}*{margin:0;padding:0;box-sizing:border-box}html{font-size:16px}@media (max-width:480px){html{font-size:15px}}body{font-family:var(--font-satoshi);background-color:var(--background);color:var(--text);line-height:1.8;font-size:1.02rem;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .2s ease,color .2s ease}body.contact-sheet-open{overflow:hidden}a{color:var(--link);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;transition:color .2s ease;-webkit-tap-highlight-color:rgba(255,255,255,.1)}a:hover{color:var(--link-hover)}.text-link{color:var(--link);background:transparent;border:0;border-radius:0;padding:0;font:inherit;line-height:inherit;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;cursor:pointer;transition:color .2s ease}.text-link:focus-visible,.text-link:hover{color:var(--link-hover)}.text-link:focus-visible{outline:2px solid var(--accent);outline-offset:3px}a.active-touch{color:var(--link-hover);border-color:var(--link-hover);opacity:.8}@media (max-width:480px){a{padding:4px 0}}.container{max-width:640px;margin:0 auto;padding:120px 24px 40px}@media (max-width:768px){.container{padding:60px 20px calc(104px + env(safe-area-inset-bottom))}}@media (max-width:480px){.container{padding:40px 16px calc(104px + env(safe-area-inset-bottom))}}header{margin-bottom:32px;text-align:center}@media (max-width:480px){header{margin-bottom:24px}}h1{font-size:2rem;font-weight:600;margin-bottom:10px}.subtitle{color:var(--text-secondary);font-size:.95rem}section{margin-bottom:44px}@media (max-width:480px){section{margin-bottom:40px}}section p{margin-bottom:20px}@media (max-width:480px){section p{margin-bottom:16px}}section p:last-child{margin-bottom:0}h2{font-size:1rem;font-weight:600;margin-bottom:16px;text-transform:lowercase}@media (max-width:480px){h2{margin-bottom:15px}}.project{margin-bottom:30px}@media (max-width:480px){.project{margin-bottom:25px}}.project h3{font-size:1rem;font-weight:600;margin-bottom:6px;display:flex;justify-content:space-between;align-items:baseline}@media (max-width:480px){.project h3{flex-direction:column;align-items:flex-start;gap:5px}}.project h3 .year{color:var(--text-secondary);font-size:.875rem;font-weight:400}.project h3 a{border-bottom:none;display:inline-block}@media (max-width:480px){.project h3 a{padding:5px 0}}.project p{color:var(--text-secondary);margin-bottom:10px}.blog-post{margin-bottom:15px;display:flex;justify-content:space-between;align-items:center}@media (max-width:580px){.blog-post{flex-direction:column;align-items:flex-start;gap:5px;margin-bottom:20px}}.blog-post a{font-size:1rem;border-bottom:none;display:inline-block}@media (max-width:480px){.blog-post a{padding:5px 0;margin-bottom:3px}}.blog-post .views{color:var(--text-secondary);font-size:.875rem;white-space:nowrap}.note{padding:20px;border:1px solid var(--accent);margin-bottom:20px}@media (max-width:480px){.note{padding:15px}}.note h3{font-size:1.125rem;font-weight:500}.note h3,.note p{margin-bottom:10px}.note .date,.note p{color:var(--text-secondary)}.note .date{font-size:.875rem}.contact{display:flex;gap:15px;margin-bottom:20px}@media (max-width:580px){.contact{flex-direction:column;gap:10px}}@media (max-width:480px){.contact p{line-height:1.8}}.contact a{margin-right:5px}.contact-overlay{position:fixed;inset:0;z-index:40;display:flex;align-items:center;justify-content:center;padding:24px}.contact-backdrop{position:absolute;inset:0;padding:0;background:var(--contact-backdrop);border:0;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);cursor:pointer}.contact-backdrop:disabled{cursor:not-allowed}.contact-sheet{position:relative;z-index:1;width:min(100%,448px);max-height:min(640px,calc(100vh - 48px));overflow-y:auto;background:var(--contact-surface);color:var(--text);border:1px solid var(--contact-border);border-radius:28px;box-shadow:var(--contact-shadow);padding:14px;transition:transform .2s ease}.contact-sheet-handle{position:relative;z-index:3;display:none;padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;cursor:-webkit-grab;cursor:grab;touch-action:none}.contact-sheet-handle:disabled{cursor:not-allowed;opacity:.65}.contact-sheet-handle:before{content:"";display:block;width:42px;height:4px;border-radius:999px;background:var(--color-border)}.contact-sheet-handle:focus-visible:before{background:var(--accent)}.contact-sheet-dragging{transition:none}.contact-sheet-header{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:0;padding:8px 8px 14px}.contact-sheet-header h2{margin:0;font-size:1rem;font-weight:650;line-height:1.2;text-transform:none}.contact-close{width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;color:var(--text-secondary);background:var(--contact-panel);border:1px solid var(--contact-border);border-radius:999px;font:inherit;font-size:1.2rem;line-height:1;cursor:pointer;box-shadow:0 1px 2px rgba(0,0,0,.05),inset 0 1px 0 color-mix(in srgb,var(--background) 40%,transparent);transition:border-color .2s ease,color .2s ease,transform .2s ease}.contact-close:focus-visible,.contact-close:hover{color:var(--link-hover);border-color:var(--link-hover)}.contact-close:active{transform:scale(.96)}.contact-close:disabled,.contact-submit:disabled{cursor:not-allowed;opacity:.65}.contact-scene-close{position:absolute;top:22px;right:22px;z-index:3;visibility:hidden;opacity:0;pointer-events:none}.contact-sheet-scene-active .contact-scene-close{visibility:visible;opacity:1;pointer-events:auto}.contact-sheet-scene-active .contact-scene-close:disabled{pointer-events:none}.contact-form{display:grid;grid-gap:14px;gap:14px;padding:16px;background:var(--contact-panel);border:1px solid var(--contact-border);border-radius:18px;box-shadow:inset 0 1px 0 color-mix(in srgb,var(--background) 55%,transparent)}.contact-form label{display:grid;grid-gap:8px;gap:8px;color:var(--text);font-size:.84rem;font-weight:600;line-height:1.4}.contact-form input,.contact-form textarea{width:100%;color:var(--text);background:var(--contact-field);border:1px solid var(--contact-border);border-radius:9px;font:inherit;font-size:.94rem;font-weight:400;line-height:1.5;outline:none;box-shadow:inset 0 1px 0 color-mix(in srgb,var(--background) 46%,transparent);transition:border-color .2s ease,box-shadow .2s ease}.contact-form input{min-height:48px;padding:10px 14px}.contact-form textarea{min-height:138px;resize:vertical;padding:12px 14px}.contact-form input::placeholder,.contact-form textarea::placeholder{color:var(--text-secondary);opacity:.55}.contact-form input:focus,.contact-form textarea:focus{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 25%,transparent)}.contact-honeypot{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}.contact-submit{justify-self:end;min-width:112px;min-height:40px;margin-top:4px;padding:0 18px;color:var(--background);background:var(--text);border:1px solid var(--text);border-radius:9px;font:inherit;font-size:.9rem;font-weight:600;cursor:pointer;box-shadow:0 9px 20px rgba(0,0,0,.12);transition:opacity .2s ease,transform .2s ease}.contact-submit:focus-visible,.contact-submit:hover{opacity:.86}.contact-submit:active{transform:translateY(1px)}.contact-status{margin:0;color:var(--text-secondary);font-size:.9rem;line-height:1.5}.contact-status-error{color:var(--link-hover)}.contact-form-content{transition:opacity .24s ease,transform .24s ease,visibility .24s ease}.contact-sheet-scene-active .contact-form-content{visibility:hidden;opacity:0;pointer-events:none;transform:translateY(-6px) scale(.985)}.contact-send-scene{position:absolute;inset:14px;z-index:2;display:grid;min-height:calc(100% - 28px);place-items:center;text-align:center;visibility:hidden;opacity:0;pointer-events:none;transition:opacity .24s ease,visibility .24s ease}.contact-sheet-scene-active .contact-send-scene{visibility:visible;opacity:1}.contact-send-stage{position:relative;width:min(100%,320px);height:180px}.contact-paper-plane{position:absolute;left:8%;bottom:13%;width:42px;height:42px;color:var(--text);filter:drop-shadow(0 8px 14px rgba(0,0,0,.16));transform-origin:center}.contact-sheet-scene-active .contact-paper-plane{animation:contact-paper-plane-flight 1.18s cubic-bezier(.33,0,.2,1) forwards}.contact-plane-trail{position:absolute;width:6px;height:6px;border-radius:999px;background:currentColor;color:var(--text-secondary);opacity:0}.contact-plane-trail-one{left:14%;bottom:23%}.contact-plane-trail-two{left:36%;bottom:58%}.contact-plane-trail-three{right:19%;top:23%}.contact-sheet-scene-active .contact-plane-trail-one{animation:contact-plane-trail-pop .48s ease .08s forwards}.contact-sheet-scene-active .contact-plane-trail-two{animation:contact-plane-trail-pop .48s ease .34s forwards}.contact-sheet-scene-active .contact-plane-trail-three{animation:contact-plane-trail-pop .48s ease .62s forwards}.contact-send-message{position:absolute;right:0;left:0;top:50%;width:min(100%,330px);margin:0 auto;padding:0 16px;color:var(--text);font-size:1rem;font-weight:650;line-height:1.35;opacity:0;transform:translateY(calc(-50% + 8px));transition:opacity .28s ease,transform .28s ease}.contact-sheet-scene-sent .contact-send-message{opacity:1;transform:translateY(-50%);transition-delay:.05s}@keyframes contact-paper-plane-flight{0%{opacity:0;transform:translate(0) rotate(-18deg) scale(.76)}11%{opacity:1}31%{transform:translate(72px,-78px) rotate(19deg) scale(.95)}57%{transform:translate(162px,-36px) rotate(-9deg) scale(1)}82%{opacity:1;transform:translate(238px,-128px) rotate(17deg) scale(.94)}to{opacity:0;transform:translate(292px,-158px) rotate(28deg) scale(.78)}}@keyframes contact-plane-trail-pop{0%{opacity:0;transform:scale(.4)}38%{opacity:.42;transform:scale(1)}to{opacity:0;transform:scale(1.8)}}@media (prefers-reduced-motion:reduce){.contact-form-content,.contact-send-message,.contact-send-scene{transition:none}.contact-sheet-scene-active .contact-paper-plane,.contact-sheet-scene-active .contact-plane-trail{animation:none}.contact-sheet-scene-active .contact-paper-plane{opacity:1;transform:translate(120px,-72px) rotate(12deg)}}@media (max-width:480px){.contact a,.contact-trigger{display:inline-block;padding:5px 3px 5px 0}}@media (max-width:768px){.contact-overlay{align-items:flex-end;justify-content:stretch;padding:0}.contact-backdrop{background:var(--contact-backdrop)}.contact-sheet{width:100%;max-height:min(82vh,640px);overscroll-behavior:contain;border-right:0;border-bottom:0;border-left:0;border-radius:24px 24px 0 0;padding:10px 14px calc(18px + env(safe-area-inset-bottom));box-shadow:0 -20px 60px rgba(0,0,0,.22);will-change:transform}.contact-sheet-handle{display:flex;width:72px;height:28px;align-items:center;justify-content:center;margin:-4px auto 8px;border-radius:999px}.contact-close{display:none}.contact-sheet-header{padding:4px 6px 12px}.contact-form{padding:14px;border-radius:16px}.contact-form textarea{min-height:150px}.contact-submit{justify-self:stretch;min-height:46px}}.site-shell{min-height:100vh;display:flex;flex-direction:column}.site-main{flex:1 1;width:100%}.site-footer{margin-top:auto;margin-right:auto;margin-left:auto;max-width:640px;padding:0 24px 16px}.site-footer-inner{display:flex;justify-content:center;align-items:center}.theme-toggle-button{font:inherit;color:var(--text);background:transparent;border:0;padding:4px;cursor:pointer;transition:opacity .2s ease}.theme-toggle-button:hover{opacity:.7}@media (max-width:768px){.site-footer{position:fixed;left:0;right:0;bottom:calc(env(safe-area-inset-bottom) + 8px);margin:0;max-width:none;padding:0 16px;z-index:20}}@media (max-width:480px){.site-footer{bottom:calc(env(safe-area-inset-bottom) + 6px)}}@media screen and (orientation:landscape) and (max-height:500px){.container{padding-top:30px;padding-bottom:30px}header{margin-bottom:30px}}@media print{body{background-color:#fff}a,body{color:#000}a{border-bottom-color:#000}.container{padding:20px}.note{border:1px solid #ddd}footer{border-top-color:#ddd}}