/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--font-heading:"DM Sans",system-ui,sans-serif;--font-body:"DM Sans",system-ui,sans-serif}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.static{position:static}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.flex-shrink{flex-shrink:1}.flex-wrap{flex-wrap:wrap}.border{border-style:var(--tw-border-style);border-width:1px}.backdrop-filter{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.delay-100{transition-delay:.1s}.delay-200{transition-delay:.2s}.delay-300{transition-delay:.3s}}:root{--color-primary:#1a1a2e;--color-accent:#059669;--color-accent-hover:#047857;--color-dark:#374151;--color-light:#f9fafb;--color-bg:#fff;--color-text:#1a1a2e;--color-text-secondary:#374151;--color-text-muted:#94a3b8;--color-border:#e2e8f0;--font-heading:"DM Sans",system-ui,sans-serif;--font-body:"DM Sans",system-ui,sans-serif;--section-padding:clamp(3rem,8vw,6rem);--container-max:1100px;--transition-fast:.15s ease;--transition-base:.2s ease}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-font-smoothing:antialiased}body{font-family:var(--font-body);color:var(--color-text);background:var(--color-bg);font-size:16px;line-height:1.7}h1,h2,h3,h4{font-family:var(--font-heading);font-weight:700;line-height:1.2}a{color:var(--color-accent);transition:color var(--transition-fast);text-decoration:none}a:hover{color:var(--color-accent-hover)}.container{max-width:var(--container-max);margin:0 auto;padding:0 1.5rem}.section{padding:var(--section-padding)0}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.animate-in{animation:.6s forwards fadeInUp}.delay-100{animation-delay:.1s}.delay-200{animation-delay:.2s}.delay-300{animation-delay:.3s}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}.header[data-astro-cid-3ef6ksr2]{position:sticky;top:0;z-index:100;background:#ffffffd9;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--color-border);transition:background var(--transition-base)}.header__inner[data-astro-cid-3ef6ksr2]{display:flex;align-items:center;justify-content:space-between;height:64px}.header__logo[data-astro-cid-3ef6ksr2]{display:flex;align-items:center;flex-shrink:0}.header__logo[data-astro-cid-3ef6ksr2] img[data-astro-cid-3ef6ksr2]{height:28px;width:auto}.header__nav[data-astro-cid-3ef6ksr2]{display:flex;align-items:center;gap:2rem}.header__link[data-astro-cid-3ef6ksr2]{font-family:var(--font-body);font-size:.9rem;font-weight:500;color:var(--color-text-secondary);transition:color var(--transition-fast);text-decoration:none}.header__link[data-astro-cid-3ef6ksr2]:hover{color:var(--color-primary)}.header__cta[data-astro-cid-3ef6ksr2]{font-family:var(--font-body);font-size:.9rem;font-weight:600;color:var(--color-accent);padding:.4rem 1rem;border:1.5px solid var(--color-accent);border-radius:6px;transition:background var(--transition-fast),color var(--transition-fast);text-decoration:none}.header__cta[data-astro-cid-3ef6ksr2]:hover{background:var(--color-accent);color:#fff}@media(max-width:640px){.header__nav[data-astro-cid-3ef6ksr2]{gap:1rem}.header__link[data-astro-cid-3ef6ksr2]{font-size:.82rem}.header__cta[data-astro-cid-3ef6ksr2]{font-size:.82rem;padding:.35rem .75rem}}.hero[data-astro-cid-nlow4r3u]{padding:clamp(5rem,14vw,10rem) 0 clamp(4rem,10vw,8rem)}.hero__content[data-astro-cid-nlow4r3u]{max-width:680px}.hero__title[data-astro-cid-nlow4r3u]{font-size:clamp(3rem,8vw,4.5rem);font-weight:700;color:var(--color-primary);letter-spacing:-.02em;line-height:1.1}.hero__accent[data-astro-cid-nlow4r3u]{color:var(--color-accent)}.hero__tagline[data-astro-cid-nlow4r3u]{font-size:clamp(1.15rem,2.5vw,1.35rem);font-weight:500;color:var(--color-text-muted);font-style:italic;margin-top:.75rem}.hero__description[data-astro-cid-nlow4r3u]{font-size:1.1rem;color:var(--color-text-secondary);line-height:1.75;margin-top:1.75rem}.hero__actions[data-astro-cid-nlow4r3u]{display:flex;gap:1rem;margin-top:2.25rem;flex-wrap:wrap}.hero__btn[data-astro-cid-nlow4r3u]{display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-body);font-size:.95rem;font-weight:600;padding:.7rem 1.5rem;border-radius:8px;text-decoration:none;transition:background var(--transition-fast),color var(--transition-fast),border-color var(--transition-fast)}.hero__btn--primary[data-astro-cid-nlow4r3u]{background:var(--color-accent);color:#fff;border:1.5px solid var(--color-accent)}.hero__btn--primary[data-astro-cid-nlow4r3u]:hover{background:var(--color-accent-hover);border-color:var(--color-accent-hover);color:#fff}.hero__btn--outline[data-astro-cid-nlow4r3u]{background:transparent;color:var(--color-accent);border:1.5px solid var(--color-accent)}.hero__btn--outline[data-astro-cid-nlow4r3u]:hover{background:var(--color-accent);color:#fff}.card[data-astro-cid-mspuyifq]{border:1px solid var(--color-border);border-radius:12px;padding:1.75rem;display:flex;flex-direction:column;gap:1rem;transition:border-color var(--transition-base),box-shadow var(--transition-base)}.card[data-astro-cid-mspuyifq]:hover{border-color:var(--color-accent);box-shadow:0 4px 20px #05966914}.card__header[data-astro-cid-mspuyifq]{display:flex;align-items:center;justify-content:space-between;gap:1rem}.card__title[data-astro-cid-mspuyifq]{font-size:1.2rem;font-weight:700;color:var(--color-primary);line-height:1.3}.card__badge[data-astro-cid-mspuyifq]{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;padding:.2rem .6rem;border-radius:100px;white-space:nowrap;flex-shrink:0}.card__badge--live[data-astro-cid-mspuyifq]{background:#0596691a;color:#059669}.card__badge--dev[data-astro-cid-mspuyifq]{background:#d977061a;color:#b45309}.card__badge--done[data-astro-cid-mspuyifq]{background:#64748b1a;color:#64748b}.card__description[data-astro-cid-mspuyifq]{font-size:.95rem;color:var(--color-text-secondary);line-height:1.65}.card__impact[data-astro-cid-mspuyifq]{font-size:.9rem;color:var(--color-accent);font-weight:500;line-height:1.6;padding-left:.85rem;border-left:2px solid var(--color-accent)}.card__stack[data-astro-cid-mspuyifq]{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:auto}.card__chip[data-astro-cid-mspuyifq]{font-size:.75rem;font-weight:500;color:var(--color-text-secondary);background:var(--color-light);padding:.2rem .55rem;border-radius:6px;border:1px solid var(--color-border)}.card__link[data-astro-cid-mspuyifq]{display:inline-flex;align-items:center;gap:.35rem;font-size:.88rem;font-weight:600;color:var(--color-accent);margin-top:.25rem;transition:gap var(--transition-fast);text-decoration:none}.card__link[data-astro-cid-mspuyifq]:hover{color:var(--color-accent-hover);gap:.6rem}.portfolio__header[data-astro-cid-bc26wevp]{margin-bottom:2.5rem}.portfolio__title[data-astro-cid-bc26wevp]{font-size:clamp(1.8rem,4vw,2.4rem);color:var(--color-primary);margin-bottom:.4rem}.portfolio__subtitle[data-astro-cid-bc26wevp]{font-size:1.1rem;color:var(--color-text-muted);font-weight:400}.portfolio__grid[data-astro-cid-bc26wevp]{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1.5rem}.portfolio__other[data-astro-cid-bc26wevp]{margin-top:3.5rem}.portfolio__other-title[data-astro-cid-bc26wevp]{font-size:1.15rem;font-weight:600;color:var(--color-text-secondary);margin-bottom:1.25rem}@media(max-width:400px){.portfolio__grid[data-astro-cid-bc26wevp]{grid-template-columns:1fr}}.services__header[data-astro-cid-satlbe6z]{margin-bottom:2.5rem}.services__title[data-astro-cid-satlbe6z]{font-size:clamp(1.8rem,4vw,2.4rem);color:var(--color-primary);margin-bottom:.4rem}.services__subtitle[data-astro-cid-satlbe6z]{font-size:1.1rem;color:var(--color-text-muted);font-weight:400}.services__grid[data-astro-cid-satlbe6z]{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem}.services__card[data-astro-cid-satlbe6z]{border:1px solid var(--color-border);border-radius:12px;padding:2rem 1.75rem;display:flex;flex-direction:column;gap:.85rem;transition:border-color var(--transition-base),box-shadow var(--transition-base)}.services__card[data-astro-cid-satlbe6z]:hover{border-color:var(--color-accent);box-shadow:0 4px 20px #05966914}.services__icon[data-astro-cid-satlbe6z]{font-family:Courier New,Courier,monospace;font-size:1.8rem;font-weight:700;color:var(--color-accent);line-height:1}.services__card-title[data-astro-cid-satlbe6z]{font-size:1.15rem;font-weight:700;color:var(--color-primary)}.services__card-description[data-astro-cid-satlbe6z]{font-size:.95rem;color:var(--color-text-secondary);line-height:1.65}@media(max-width:768px){.services__grid[data-astro-cid-satlbe6z]{grid-template-columns:1fr}}.about__content[data-astro-cid-x2lc2h5w]{max-width:640px}.about__title[data-astro-cid-x2lc2h5w]{font-size:clamp(1.8rem,4vw,2.4rem);color:var(--color-primary);margin-bottom:1.5rem}.about__body[data-astro-cid-x2lc2h5w]{display:flex;flex-direction:column;gap:1.25rem}.about__body[data-astro-cid-x2lc2h5w] p[data-astro-cid-x2lc2h5w]{font-size:1.05rem;color:var(--color-text-secondary);line-height:1.75}.about__body[data-astro-cid-x2lc2h5w] strong[data-astro-cid-x2lc2h5w]{color:var(--color-primary);font-weight:600}.contact__content[data-astro-cid-jjagjrbk]{max-width:640px}.contact__title[data-astro-cid-jjagjrbk]{font-size:clamp(1.8rem,4vw,2.4rem);color:var(--color-primary);margin-bottom:.4rem}.contact__subtitle[data-astro-cid-jjagjrbk]{font-size:1.1rem;color:var(--color-text-muted);font-weight:400;margin-bottom:2rem}.contact__cards[data-astro-cid-jjagjrbk]{display:flex;flex-direction:column;gap:1rem}.contact__card[data-astro-cid-jjagjrbk]{display:flex;flex-direction:column;gap:.3rem;border:1px solid var(--color-border);border-radius:12px;padding:1.5rem 1.75rem;text-decoration:none;transition:border-color var(--transition-base),box-shadow var(--transition-base)}.contact__card[data-astro-cid-jjagjrbk]:hover{border-color:var(--color-accent);box-shadow:0 4px 20px #05966914}.contact__label[data-astro-cid-jjagjrbk]{font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted)}.contact__value[data-astro-cid-jjagjrbk]{font-size:1.1rem;font-weight:600;color:var(--color-accent);transition:color var(--transition-fast)}.contact__card[data-astro-cid-jjagjrbk]:hover .contact__value[data-astro-cid-jjagjrbk]{color:var(--color-accent-hover)}.footer[data-astro-cid-sz7xmlte]{border-top:1px solid var(--color-border);padding:3rem 0 2rem;margin-top:var(--section-padding)}.footer__inner[data-astro-cid-sz7xmlte]{display:flex;flex-direction:column;align-items:center;gap:1rem;text-align:center}.footer__logo[data-astro-cid-sz7xmlte]{display:inline-flex;opacity:.6;transition:opacity var(--transition-fast)}.footer__logo[data-astro-cid-sz7xmlte]:hover{opacity:1}.footer__logo[data-astro-cid-sz7xmlte] img[data-astro-cid-sz7xmlte]{height:24px;width:auto}.footer__tagline[data-astro-cid-sz7xmlte]{font-family:var(--font-body);font-size:.95rem;font-weight:500;color:var(--color-text-muted);font-style:italic}.footer__links[data-astro-cid-sz7xmlte]{display:flex;align-items:center;gap:.75rem;font-size:.9rem}.footer__link[data-astro-cid-sz7xmlte]{color:var(--color-accent);font-weight:500;text-decoration:none;transition:color var(--transition-fast)}.footer__link[data-astro-cid-sz7xmlte]:hover{color:var(--color-accent-hover)}.footer__separator[data-astro-cid-sz7xmlte]{color:var(--color-text-muted)}.footer__legal[data-astro-cid-sz7xmlte]{font-size:.8rem;color:var(--color-text-muted);margin-top:.5rem}
