:root{--color-primary: #0a0f1a;--color-accent: #e8553d;--color-accent-hover: #d44530;--color-surface: #f4f0eb;--color-surface-alt: #eae4dc;--color-text: #1a1a2e;--color-text-muted: #5c5c6e;--color-text-inverse: #f4f0eb;--color-border: #d0c8bc;--font-display: "Inter", sans-serif;--font-body: "Inter", sans-serif;--font-size-base: 1rem;--font-size-sm: .875rem;--font-size-lg: 1.25rem;--font-size-xl: 1.5rem;--font-size-2xl: 2rem;--font-size-3xl: 2.5rem;--font-size-hero: clamp(2.5rem, 6vw, 4rem);--font-weight-normal: 400;--font-weight-bold: 700;--line-height-tight: 1.2;--line-height-normal: 1.7;--space-xs: .5rem;--space-sm: 1rem;--space-md: 1.5rem;--space-lg: 2rem;--space-xl: 3rem;--space-2xl: 4rem;--space-section: 5rem;--reveal-duration: .2s;--reveal-easing: ease-in;--reveal-distance: 20px;--reveal-stagger: .08s;--section-min-height: 120vh;--tap-target-min: 44px;--content-max-width: 1200px;--content-padding: var(--space-lg)}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:100%;scroll-behavior:smooth;text-size-adjust:100%}body{font-family:var(--font-body);font-size:var(--font-size-base);font-weight:var(--font-weight-normal);line-height:var(--line-height-normal);color:var(--color-text);background-color:var(--color-surface);overflow-x:hidden}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);font-weight:var(--font-weight-bold);line-height:var(--line-height-tight)}a{color:var(--color-accent);text-decoration:none}a:hover{color:var(--color-accent-hover)}img{max-width:100%;height:auto;display:block}.section{min-height:var(--section-min-height);padding:var(--space-section) var(--content-padding);display:flex;flex-direction:column;justify-content:center}.section--alt{background-color:var(--color-surface-alt)}.section__inner{width:100%;max-width:var(--content-max-width);margin-inline:auto}.section__title{font-size:var(--font-size-2xl);margin-bottom:var(--space-lg)}.section__subtitle{font-family:var(--font-body);font-size:var(--font-size-lg);color:var(--color-text-muted);font-weight:var(--font-weight-normal);margin-bottom:var(--space-xl)}.cta-button{display:inline-flex;align-items:center;justify-content:center;min-height:var(--tap-target-min);min-width:var(--tap-target-min);padding:var(--space-sm) var(--space-xl);font-family:var(--font-body);font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--color-text-inverse);background-color:var(--color-accent);border:none;border-radius:4px;cursor:pointer;transition:background-color .15s ease-in,transform .15s ease-in;text-decoration:none}.cta-button:hover{background-color:var(--color-accent-hover);color:var(--color-text-inverse);transform:translateY(-2px)}.cta-button:focus-visible{outline:3px solid var(--color-accent);outline-offset:3px}.reveal{opacity:0;transform:translateY(var(--reveal-distance));transition:opacity var(--reveal-duration) var(--reveal-easing),transform var(--reveal-duration) var(--reveal-easing);transition-delay:calc(var(--reveal-index, 0) * var(--reveal-stagger))}.revealed{opacity:1;transform:translateY(0)}@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}}noscript .reveal,.no-js .reveal{opacity:1;transform:none;transition:none}@media(width>=768px){:root{--content-padding: var(--space-xl);--space-section: 6rem}.section__title{font-size:var(--font-size-3xl)}}@media(width>=1024px){:root{--content-padding: var(--space-2xl)}}.hero[data-astro-cid-nlow4r3u]{position:relative;min-height:100vh;min-height:100dvh;display:flex;align-items:center;padding:var(--space-section) var(--content-padding);overflow:hidden}.hero__bg[data-astro-cid-nlow4r3u]{position:absolute;inset:0;z-index:0}.hero__mesh[data-astro-cid-nlow4r3u]{position:absolute;inset:0;background:radial-gradient(ellipse 80% 60% at 20% 30%,var(--color-primary),transparent),radial-gradient(ellipse 60% 80% at 80% 70%,var(--color-accent),transparent),var(--color-primary);opacity:.95}.hero__grain[data-astro-cid-nlow4r3u]{position:absolute;inset:0;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.04'/%3E%3C/svg%3E");background-repeat:repeat;background-size:256px 256px;opacity:.5;mix-blend-mode:overlay}.hero__content[data-astro-cid-nlow4r3u]{position:relative;z-index:1;max-width:var(--content-max-width);margin-inline:auto;width:100%;padding-left:0}.hero__tag[data-astro-cid-nlow4r3u]{font-family:var(--font-body);font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.2em;color:var(--color-accent);margin-bottom:var(--space-md)}.hero__headline[data-astro-cid-nlow4r3u]{font-family:var(--font-display);font-size:var(--font-size-hero);color:var(--color-text-inverse);margin-bottom:var(--space-lg);max-width:14ch}.hero__subheadline[data-astro-cid-nlow4r3u]{font-size:var(--font-size-lg);color:var(--color-text-inverse);opacity:.8;margin-bottom:var(--space-xl);max-width:36ch;line-height:var(--line-height-normal)}.hero__accent[data-astro-cid-nlow4r3u]{position:absolute;right:-8%;bottom:10%;width:clamp(200px,35vw,500px);aspect-ratio:1 / 1.2;border:2px solid var(--color-accent);border-radius:2px;opacity:.15;transform:rotate(-6deg);z-index:0}@media(width>=768px){.hero__content[data-astro-cid-nlow4r3u]{padding-left:8%}.hero__accent[data-astro-cid-nlow4r3u]{right:5%;bottom:15%;opacity:.2}}.aboutme__profile[data-astro-cid-rzultwnu]{margin-bottom:var(--space-xl)}.aboutme__name[data-astro-cid-rzultwnu]{font-family:var(--font-display);font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--color-text);margin-bottom:var(--space-md)}.aboutme__title-separator[data-astro-cid-rzultwnu]{color:var(--color-accent)}.aboutme__bio[data-astro-cid-rzultwnu]{color:var(--color-text-muted);line-height:var(--line-height-normal);max-width:50ch}.aboutme__social[data-astro-cid-rzultwnu]{display:flex;gap:var(--space-md)}.aboutme__link[data-astro-cid-rzultwnu]{display:inline-flex;align-items:center;gap:var(--space-xs);min-height:var(--tap-target-min);padding:var(--space-xs) var(--space-sm);color:var(--color-text);font-size:var(--font-size-base);font-weight:var(--font-weight-bold);border:1px solid var(--color-border);border-radius:4px;transition:color .15s ease-in,transform .15s ease-in,border-color .15s ease-in}.aboutme__link[data-astro-cid-rzultwnu]:hover{color:var(--color-accent);border-color:var(--color-accent);transform:translateY(-2px)}.aboutme__link[data-astro-cid-rzultwnu]:focus-visible{outline:3px solid var(--color-accent);outline-offset:3px}.aboutme__icon[data-astro-cid-rzultwnu]{width:24px;height:24px;flex-shrink:0}.skills__grid[data-astro-cid-ywmogu3j]{display:grid;gap:var(--space-lg)}.skills__card[data-astro-cid-ywmogu3j]{background-color:var(--color-surface);padding:var(--space-xl);border-radius:4px;border-left:3px solid var(--color-accent)}.skills__card-title[data-astro-cid-ywmogu3j]{font-family:var(--font-display);font-size:var(--font-size-xl);margin-bottom:var(--space-md);color:var(--color-text)}.skills__list[data-astro-cid-ywmogu3j]{list-style:none;display:flex;flex-direction:column;gap:var(--space-sm)}.skills__list[data-astro-cid-ywmogu3j] li[data-astro-cid-ywmogu3j]{padding-left:var(--space-md);position:relative;color:var(--color-text-muted)}.skills__list[data-astro-cid-ywmogu3j] li[data-astro-cid-ywmogu3j]:before{content:"—";position:absolute;left:0;color:var(--color-accent)}.skills__badges[data-astro-cid-ywmogu3j]{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.skills__badge[data-astro-cid-ywmogu3j]{display:inline-block;padding:var(--space-xs) var(--space-sm);font-size:var(--font-size-sm);background-color:var(--color-primary);color:var(--color-text-inverse);border-radius:2px}@media(width>=768px){.skills__grid[data-astro-cid-ywmogu3j]{grid-template-columns:repeat(3,1fr)}}.workstyle__grid[data-astro-cid-g6vkc6sp]{display:grid;gap:var(--space-lg)}.workstyle__card[data-astro-cid-g6vkc6sp]{padding:var(--space-xl);border:1px solid var(--color-border);border-radius:4px;background-color:var(--color-surface)}.workstyle__icon[data-astro-cid-g6vkc6sp]{font-family:var(--font-display);font-size:var(--font-size-2xl);color:var(--color-accent);margin-bottom:var(--space-sm)}.workstyle__card-title[data-astro-cid-g6vkc6sp]{font-family:var(--font-display);font-size:var(--font-size-xl);margin-bottom:var(--space-sm)}.workstyle__desc[data-astro-cid-g6vkc6sp]{color:var(--color-text-muted);margin-bottom:var(--space-md);line-height:var(--line-height-normal)}.workstyle__fit[data-astro-cid-g6vkc6sp]{font-size:var(--font-size-sm);color:var(--color-text-muted);border-top:1px solid var(--color-border);padding-top:var(--space-sm)}@media(width>=768px){.workstyle__grid[data-astro-cid-g6vkc6sp]{grid-template-columns:repeat(3,1fr)}}.works__grid[data-astro-cid-erqm26fx]{display:grid;gap:var(--space-lg)}.works__card[data-astro-cid-erqm26fx]{display:block;width:100%;text-align:left;background:none;border:1px solid var(--color-border);border-radius:4px;overflow:hidden;cursor:pointer;padding:0;font-family:var(--font-body);transition:transform .15s ease-in,box-shadow .15s ease-in}.works__card[data-astro-cid-erqm26fx]:hover{transform:translateY(-4px);box-shadow:0 8px 32px #0000001a}.works__card[data-astro-cid-erqm26fx]:focus-visible{outline:3px solid var(--color-accent);outline-offset:3px}.works__image-wrap[data-astro-cid-erqm26fx]{aspect-ratio:16 / 9;overflow:hidden;background-color:var(--color-surface-alt)}.works__image[data-astro-cid-erqm26fx]{width:100%;height:100%;object-fit:cover;transition:transform .3s ease-in}.works__card[data-astro-cid-erqm26fx]:hover .works__image[data-astro-cid-erqm26fx]{transform:scale(1.03)}.works__card-info[data-astro-cid-erqm26fx]{padding:var(--space-md) var(--space-lg)}.works__card-title[data-astro-cid-erqm26fx]{font-family:var(--font-display);font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--color-text);margin-bottom:var(--space-xs)}.works__card-desc[data-astro-cid-erqm26fx]{font-size:var(--font-size-sm);color:var(--color-text-muted)}.works__modal[data-astro-cid-erqm26fx]{max-width:640px;width:calc(100% - var(--space-lg) * 2);max-height:90vh;margin:auto;border:none;border-radius:8px;padding:0;background-color:var(--color-surface);color:var(--color-text);overflow-y:auto}.works__modal[data-astro-cid-erqm26fx]::backdrop{background-color:#0009}.works__modal-inner[data-astro-cid-erqm26fx]{position:relative}.works__modal-close[data-astro-cid-erqm26fx]{position:absolute;top:var(--space-sm);right:var(--space-sm);z-index:1;display:flex;align-items:center;justify-content:center;width:40px;height:40px;border:none;border-radius:50%;background-color:var(--color-primary);color:var(--color-text-inverse);cursor:pointer;transition:opacity .15s ease-in}.works__modal-close[data-astro-cid-erqm26fx]:hover{opacity:.8}.works__modal-close[data-astro-cid-erqm26fx]:focus-visible{outline:3px solid var(--color-accent);outline-offset:3px}.works__modal-close[data-astro-cid-erqm26fx] svg[data-astro-cid-erqm26fx]{width:20px;height:20px}.works__modal-image[data-astro-cid-erqm26fx]{width:100%;aspect-ratio:16 / 9;object-fit:cover;display:block}.works__modal-content[data-astro-cid-erqm26fx]{padding:var(--space-lg)}.works__modal-title[data-astro-cid-erqm26fx]{font-family:var(--font-display);font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);margin-bottom:var(--space-md)}.works__modal-desc[data-astro-cid-erqm26fx]{color:var(--color-text-muted);line-height:var(--line-height-normal);margin-bottom:var(--space-lg);white-space:pre-line}.works__modal-techs[data-astro-cid-erqm26fx]{margin-bottom:var(--space-lg)}.works__modal-techs-label[data-astro-cid-erqm26fx]{display:block;font-size:var(--font-size-sm);color:var(--color-text-muted);margin-bottom:var(--space-xs)}.works__modal-tech-list[data-astro-cid-erqm26fx]{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.works__modal-tech[data-astro-cid-erqm26fx]{display:inline-block;padding:var(--space-xs) var(--space-sm);font-size:var(--font-size-sm);background-color:var(--color-primary);color:var(--color-text-inverse);border-radius:2px}.works__modal-link[data-astro-cid-erqm26fx]{display:inline-flex;align-items:center;min-height:var(--tap-target-min);font-weight:var(--font-weight-bold);color:var(--color-accent);transition:color .15s ease-in}.works__modal-link[data-astro-cid-erqm26fx]:hover{color:var(--color-accent-hover)}@media(width>=768px){.works__grid[data-astro-cid-erqm26fx]{grid-template-columns:repeat(2,1fr)}}@media(width>=1024px){.works__grid[data-astro-cid-erqm26fx]{grid-template-columns:repeat(3,1fr)}}.cta-section[data-astro-cid-frbqrhml]{position:relative;text-align:center;background-color:var(--color-primary)}.cta-section__bg[data-astro-cid-frbqrhml]{position:absolute;inset:0;background:radial-gradient(ellipse 70% 50% at 50% 50%,var(--color-accent),transparent);opacity:.08}.cta-section__inner[data-astro-cid-frbqrhml]{position:relative;z-index:1;align-items:center}.cta-section__title[data-astro-cid-frbqrhml]{color:var(--color-text-inverse)}.cta-section__desc[data-astro-cid-frbqrhml]{font-size:var(--font-size-lg);color:var(--color-text-inverse);opacity:.8;max-width:40ch;margin-inline:auto;margin-bottom:var(--space-xl);line-height:var(--line-height-normal)}.cta-button--large[data-astro-cid-frbqrhml]{font-size:var(--font-size-xl);padding:var(--space-md) var(--space-2xl)}.floating-cta[data-astro-cid-zmlek6oa]{position:fixed;bottom:var(--space-lg);right:var(--space-lg);z-index:100;opacity:0;transform:translateY(20px);transition:opacity .3s ease-in,transform .3s ease-in;pointer-events:none}.floating-cta[data-astro-cid-zmlek6oa][data-visible=true]{opacity:1;transform:translateY(0);pointer-events:auto}.floating-cta__button[data-astro-cid-zmlek6oa]{box-shadow:0 4px 24px #0003;white-space:nowrap}@media(width<=400px){.floating-cta[data-astro-cid-zmlek6oa]{right:var(--space-sm);bottom:var(--space-sm)}}@media(prefers-reduced-motion:reduce){.floating-cta[data-astro-cid-zmlek6oa]{transition:none}}.footer__inner[data-astro-cid-j7pv25f6]{max-width:var(--content-max-width);margin-inline:auto;padding:var(--space-xl) var(--content-padding);text-align:center}.footer__copy[data-astro-cid-j7pv25f6]{font-size:var(--font-size-sm);color:var(--color-text-muted)}
