/*! modern-normalize v3.0.1 | MIT License | https://github.com/sindresorhus/modern-normalize */
*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;tab-size:4;font-family:system-ui,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;line-height:1.15}body{margin:0}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;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{border-color:currentColor}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:100%;line-height:1.15}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}*,:before,:after{box-sizing:border-box}:not(dialog){margin:0}@media (prefers-reduced-motion:no-preference){html{interpolate-size:allow-keywords}}body{-webkit-font-smoothing:antialiased;line-height:1.5}img,picture,video,canvas,svg{max-width:100%;display:block}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}p{text-wrap:pretty}h1,h2,h3,h4,h5,h6{text-wrap:balance}#root,#__next{isolation:isolate}:root{--color-primary:#1c658c;--color-secondary:#3c94c7;--color-surface:#a3becc;--color-surface-muted:#8eabbb;--color-surface-hover:#fff;--color-chrome:#fff;--color-text:#1a1a1a;--color-text-secondary:#5a6a75;--color-text-inverse:#fff;--color-border:#c5d8e6;--color-border-hover:#fff}:root[data-theme=dark]{--color-primary:#4aa3d4;--color-secondary:#6bb8de;--color-surface:#152530;--color-surface-muted:#0f1c24;--color-surface-hover:#1e3544;--color-chrome:#e8f1f6;--color-text:#e8eef2;--color-text-secondary:#8fa3b0;--color-text-inverse:#1a1a1a;--color-border:#2a4150;--color-border-hover:#4a6f85}body{color:var(--color-text);background:var(--color-surface);-webkit-font-smoothing:antialiased;margin:0;font-family:Segoe UI,system-ui,-apple-system,sans-serif;font-size:1rem;line-height:1.6}img{max-width:100%;height:auto;display:block}a{color:var(--color-primary);text-decoration:none}a:hover{color:var(--color-secondary)}h1,h2,h3,h4{margin:0 0 .75rem;font-family:Segoe UI,system-ui,-apple-system,sans-serif;line-height:1.2}h1{font-size:clamp(2rem,4vw,3rem)}h2{font-size:1.5rem}h3{font-size:1.15rem}p{margin:0 0 1rem}button,input,textarea{font:inherit}.btn{border:2px solid var(--color-primary);cursor:pointer;border-radius:.35rem;justify-content:center;align-items:center;padding:.55rem 1.1rem;font-weight:600;transition:background .2s,color .2s;display:inline-flex}.btn--primary{background:var(--color-surface);color:var(--color-primary)}.btn--primary:hover{background:var(--color-primary);color:var(--color-text-inverse)}.btn--ghost{color:var(--color-primary);background:0 0}.btn--ghost:hover{background:var(--color-primary);color:var(--color-surface)}section{margin-bottom:3.5rem}.container{width:min(100% - 2rem,1100px);margin-inline:auto}.page{flex-direction:column;min-height:calc(100vh - 4.5rem);display:flex}.page__main{flex:1;padding-block:2.5rem 4rem}.projects__title{color:var(--color-primary);margin-bottom:1.5rem}.grid{grid-template-columns:1fr;gap:1.5rem;display:grid}@media (width>=640px){.grid{grid-template-columns:repeat(2,1fr)}}@media (width>=1024px){.grid{grid-template-columns:repeat(3,1fr)}}.about{align-items:start;gap:2rem;display:grid}@media (width>=900px){.about{grid-template-columns:1fr 1fr}}.about__photo{object-fit:cover;border-radius:.35rem;width:100%}.about__title{margin-bottom:.25rem;font-size:clamp(2rem,4vw,3rem);font-weight:700}.about__subtitle{color:var(--color-text-secondary);margin-bottom:2rem;font-size:1.15rem;font-weight:400;display:block}.project-detail{gap:2rem;display:grid}@media (width>=900px){.project-detail{grid-template-columns:1.2fr 1fr;align-items:start}}.project-detail__meta{flex-wrap:wrap;gap:.5rem;margin:1rem 0 1.5rem;display:flex}.project-detail__actions{flex-wrap:wrap;gap:.75rem;margin-top:1.5rem;display:flex}.carousel{width:100%;max-width:665px;position:relative}.carousel__frame{background:var(--color-surface-hover);border:1px solid var(--color-border);border-radius:.35rem;position:relative;overflow:hidden}.carousel__image{object-fit:contain;width:100%;max-height:420px;margin-inline:auto}.carousel__caption{background:color-mix(in srgb, var(--color-secondary) 90%, transparent);color:var(--color-text-inverse);margin:0;padding:.85rem 1rem;font-size:.95rem}@supports ((-webkit-backdrop-filter:none) or (backdrop-filter:none)){.carousel__caption{background:color-mix(in srgb, var(--color-secondary) 55%, transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}}.carousel__controls{justify-content:space-between;align-items:center;gap:.5rem;margin-top:.75rem;display:flex}.carousel__btn{background:var(--color-secondary);width:3rem;height:3rem;color:var(--color-text-inverse);cursor:pointer;border:0;border-radius:.75rem;font-size:1.25rem;transition:opacity .2s}.carousel__btn:hover{opacity:.85}.carousel__btn:disabled{opacity:.4;cursor:not-allowed}.carousel__dots{flex-wrap:wrap;gap:.35rem;margin-top:.75rem;display:flex}.carousel__dot{background:var(--color-border);cursor:pointer;border:0;border-radius:50%;width:1rem;height:1rem;padding:0}.carousel__dot--active{background:var(--color-primary)}.contact{text-align:center;max-width:28rem;margin-inline:auto}.contact__title{margin-bottom:1.5rem}.form{text-align:left;gap:.9rem;display:grid}.form__field{gap:.35rem;display:grid}.form__label{color:var(--color-primary);font-size:.9rem;font-weight:600}.form__input,.form__textarea{border:2px solid var(--color-primary);background:var(--color-surface-hover);width:100%;color:var(--color-text);border-radius:.35rem;padding:.55rem .75rem}.form__input:focus,.form__textarea:focus{outline:2px solid var(--color-secondary);outline-offset:1px}.form__note{display:none}.form__actions{text-align:center;margin-top:.25rem}.form__error{color:#b00020;margin:0;font-size:.9rem}.success{text-align:center;padding:3rem 1rem}.success h1{color:var(--color-primary)}.back-link{margin-bottom:1.5rem;font-weight:600;display:inline-block}.footer{background:var(--color-primary);color:var(--color-secondary);text-align:center;padding:2.5rem 0}.footer__heading{text-transform:uppercase;color:var(--color-text);margin:0 0 1.25rem;font-size:1.75rem;font-weight:900}.footer__links{flex-wrap:wrap;justify-content:center;gap:1.25rem;margin-bottom:1.75rem;display:flex}.footer__link{color:var(--color-chrome);font-size:1.75rem;line-height:1;transition:color .2s}.footer__link:hover{color:var(--color-text-inverse)}.footer__copy{color:var(--color-chrome);margin:0;font-size:.95rem}.navbar{background:var(--color-primary);z-index:100;position:sticky;top:0}.navbar__inner{justify-content:space-between;align-items:center;gap:1rem;min-height:4.5rem;display:flex}.navbar__brand{color:var(--color-chrome);text-transform:uppercase;letter-spacing:.02em;align-items:center;gap:.65rem;font-size:1.35rem;font-weight:900;display:inline-flex}.navbar__brand:hover{color:var(--color-text-inverse)}.navbar__brand img{width:auto;height:2.5rem}.navbar__toggle{border:2px solid var(--color-chrome);width:2.75rem;height:2.75rem;color:var(--color-chrome);cursor:pointer;background:0 0;border-radius:.35rem;justify-content:center;align-items:center;display:inline-flex}@media (width>=768px){.navbar__toggle{display:none}}.navbar__links{flex-direction:column;gap:.25rem;margin:0;padding:0;list-style:none;display:none}.navbar__links--open{inset-inline:0;background:var(--color-primary);border-top:1px solid color-mix(in srgb, var(--color-chrome) 25%, transparent);padding:1rem 1rem 1.25rem;display:flex;position:absolute;top:4.5rem}@media (width>=768px){.navbar__links{border:0;flex-direction:row;align-items:center;gap:.25rem;padding:0;display:flex;position:static}}.navbar__link{color:var(--color-chrome);border-radius:.35rem;padding:.55rem .85rem;font-size:1.05rem;transition:color .2s,background .2s;display:block}.navbar__link:hover,.navbar__link--active{color:var(--color-text-inverse)}.project-card{color:inherit;transition:transform .2s;display:block}.project-card:hover{color:inherit;transform:translateY(-2px)}.project-card:hover .project-card__image{border-color:var(--color-primary)}.project-card__image{aspect-ratio:16/10;object-fit:cover;border:2px solid var(--color-secondary);background:var(--color-surface-hover);border-radius:.35rem;width:100%}.project-card__title{color:var(--color-text-secondary);margin:.65rem 0 0;font-size:1rem}.badge{border-radius:999px;padding:.25rem .65rem;font-size:.8rem;font-weight:600;line-height:1.3;display:inline-block}.badge--primary{background:var(--color-primary);color:var(--color-text-inverse)}.badge--secondary{background:var(--color-secondary);color:var(--color-text-inverse)}.theme-menu{position:relative}.theme-menu__toggle{width:100%;color:var(--color-chrome);text-align:inherit;cursor:pointer;background:0 0;border:0;border-radius:.35rem;padding:.55rem .85rem;font-size:1.05rem;transition:color .2s,background .2s;display:block}.theme-menu__toggle:hover,.theme-menu__toggle[aria-expanded=true]{color:var(--color-text-inverse)}.theme-menu__list{background:var(--color-primary);border:1px solid color-mix(in srgb, var(--color-chrome) 25%, transparent);border-radius:.35rem;flex-direction:column;gap:.15rem;margin:.35rem 0 0;padding:.35rem;list-style:none;display:flex}@media (width>=768px){.theme-menu__list{z-index:110;min-width:9rem;position:absolute;top:100%;right:0;box-shadow:0 .5rem 1rem #00000040}}.theme-menu__option{width:100%;color:var(--color-chrome);text-align:start;cursor:pointer;background:0 0;border:0;border-radius:.35rem;padding:.45rem .75rem;font-size:1rem;transition:color .2s,background .2s;display:block}.theme-menu__option:hover{color:var(--color-text-inverse);background:color-mix(in srgb, var(--color-chrome) 12%, transparent)}.theme-menu__option--active{color:var(--color-text-inverse);background:color-mix(in srgb, var(--color-chrome) 18%, transparent)}
