@font-face{font-family:'Space Grotesk';font-style:normal;font-weight:500 700;font-display:swap;src:url('../fonts/space-grotesk-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074-2079,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'Inter';font-style:normal;font-weight:400 700;font-display:swap;src:url('../fonts/inter-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074-2079,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/ibm-plex-mono-400-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074-2079,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:'IBM Plex Mono';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/ibm-plex-mono-500-latin.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074-2079,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--paper:#FAFAF7;--ink:#14151A;--muted:#6B6D76;--line:#E7E5DF;--accent:#1F5C4C;--accent-soft:#E7EFEC;--gold:#C99A44;--surface:#FFFFFF;--font-display:'Space Grotesk',sans-serif;--font-body:'Inter',sans-serif;--font-mono:'IBM Plex Mono',monospace;--text-eyebrow:0.8rem;--letter-spacing-eyebrow:0.08em;--text-body:1rem;--line-height-body:1.6;--text-h3:1.5rem;--text-h2:2.25rem;--text-h1:clamp(2.5rem,5vw,4.5rem);--max-width:1100px;--section-padding:clamp(4rem,8vw,7rem)}[data-theme="dark"]{--paper:#14151A;--ink:#F5F4F0;--muted:#9A9CA6;--line:#2A2C33;--accent:#4FA98C;--accent-soft:#1B2E29;--gold:#D8AE5E;--surface:#1B1C22}html[data-theme="light"]{color-scheme:light}html[data-theme="dark"]{color-scheme:dark}body,header,.footer-container,.card,button,.filter-pill,.cta-button,.footer-button,.footer-logo,.header-logo,.nav-menu{transition:background-color 200ms ease,color 200ms ease,border-color 200ms ease}*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;overflow-x:clip}body{overflow-x:clip;font-family:var(--font-body);font-size:var(--text-body);font-weight:400;line-height:var(--line-height-body);color:var(--ink);background-color:var(--paper);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3{font-family:var(--font-display);font-weight:700;color:var(--ink);line-height:1.2}h1{font-size:var(--text-h1)}h2{font-size:var(--text-h2)}h3{font-size:var(--text-h3)}a,span{font-family:inherit;font-size:inherit;font-weight:inherit;color:inherit}a{text-decoration:none}ul{list-style-type:none}img{max-width:100%;height:auto;display:block}.eyebrow{font-family:var(--font-mono);font-size:var(--text-eyebrow);font-weight:400;letter-spacing:var(--letter-spacing-eyebrow);text-transform:uppercase;color:var(--muted)}.main-container{margin:0 auto;padding:0 clamp(1.25rem,4vw,2rem);max-width:var(--max-width);width:100%}section{padding:var(--section-padding) 0}section .hyperlink{color:var(--accent);font-weight:600;text-decoration:underline;text-underline-offset:0.15em;transition:color 0.2s ease}section .hyperlink:hover{color:var(--ink)}.section-description{margin:2rem auto 0;text-align:center;max-width:42rem;color:var(--muted);line-height:var(--line-height-body)}.page-title{display:flex;justify-content:center;align-items:center;gap:1rem}.page-title img{height:2.5rem;width:auto}.card{background-color:var(--surface);border:1px solid var(--line);border-radius:0;box-shadow:none;transition:transform 0.2s ease,box-shadow 0.2s ease,border-color 0.2s ease}.card:hover{transform:translateY(-4px);border-color:var(--accent);box-shadow:0 8px 24px color-mix(in srgb,var(--ink) 8%,transparent)}.tag,.project-skills span{display:inline-block;font-family:var(--font-mono);font-size:0.75rem;font-weight:500;letter-spacing:0.04em;color:var(--accent);background-color:var(--accent-soft);border:none;border-radius:999px;padding:0.25rem 0.75rem}.social-link a{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem}.icon{display:inline-block;vertical-align:-0.15em;flex-shrink:0}.social-link a i,.social-link a svg,.social-link a .icon{color:var(--muted);transition:color 0.2s ease}.social-link a:hover i,.social-link a:hover svg,.social-link a:hover .icon,.social-link a i:hover,.social-link a svg:hover{color:var(--accent)}.green{color:var(--accent)}.bold{font-weight:700}.pink{color:var(--accent)}:focus{outline:none}a:focus-visible,button:focus-visible,[role="button"]:focus-visible,.toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion:no-preference){.reveal{opacity:0;transform:translateY(12px);transition:opacity 400ms ease,transform 400ms ease}.reveal.is-visible{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1;transform:none}.modal-overlay.is-open .modal-panel{animation:none}}[role="button"][data-modal-title]{cursor:pointer}.modal-overlay{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;padding:1.25rem;background-color:color-mix(in srgb,var(--ink) 55%,transparent)}[hidden],.modal-thumbnails[hidden],.gallery-nav[hidden],.gallery-counter[hidden],.modal-overlay[hidden]{display:none !important}.card-preview-wrapper{position:relative;width:100%}.card-gallery-badge{position:absolute;bottom:0.5rem;right:0.5rem;display:inline-flex;align-items:center;gap:0.25rem;padding:0.2rem 0.5rem;font-family:var(--font-mono);font-size:0.75rem;font-weight:600;line-height:1;color:#fff;background:rgba(0,0,0,0.72);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);border-radius:999px;border:1px solid rgba(255,255,255,0.2);pointer-events:none;z-index:1}.modal-panel{position:relative;width:100%;max-width:37.5rem;max-height:calc(100vh - 2.5rem);overflow-y:auto;padding:1.5rem;background-color:var(--surface);border:1px solid var(--line);border-radius:0.75rem;color:var(--ink)}@media (prefers-reduced-motion:no-preference){.modal-overlay.is-open .modal-panel{animation:modal-enter 200ms ease}}@keyframes modal-enter{from{opacity:0;transform:scale(0.96)}to{opacity:1;transform:scale(1)}}.modal-close{position:absolute;top:0.75rem;right:0.75rem;z-index:30;display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;padding:0;border:1px solid var(--line);border-radius:999px;background-color:var(--surface);color:var(--ink);font-size:1.35rem;line-height:1;cursor:pointer;box-shadow:0 2px 10px rgba(0,0,0,0.16);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:background-color 200ms ease,color 200ms ease,border-color 200ms ease,transform 150ms ease}.modal-close:hover{color:var(--accent);border-color:var(--accent);transform:scale(1.08)}.modal-close:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.modal-gallery{margin-bottom:1.25rem}.modal-gallery-viewport{position:relative;z-index:1;width:100%;aspect-ratio:16 / 9;max-height:min(24rem,50vh);overflow:hidden;border-radius:0.5rem;border:1px solid var(--line);background-color:color-mix(in srgb,var(--ink) 4%,var(--surface));display:flex;align-items:center;justify-content:center;transition:aspect-ratio 0.25s ease,max-height 0.25s ease}.modal-gallery-viewport.is-portrait{aspect-ratio:1 / 1;max-height:min(30rem,65vh)}.modal-picture{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.modal-image{display:block;width:100%;height:100%;max-width:100%;max-height:100%;object-fit:contain;object-position:center;margin:0 auto;border:none;border-radius:0}.gallery-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:2;display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;padding:0;border:1px solid var(--line);border-radius:999px;background-color:color-mix(in srgb,var(--surface) 88%,transparent);color:var(--ink);cursor:pointer;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);transition:background-color 0.2s ease,color 0.2s ease,border-color 0.2s ease,transform 0.15s ease}.gallery-nav:hover{background-color:var(--surface);color:var(--accent);border-color:var(--accent);transform:translateY(-50%) scale(1.06)}.gallery-nav:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.gallery-prev{left:0.75rem}.gallery-next{right:0.75rem}.gallery-counter{position:absolute;bottom:0.75rem;right:0.75rem;z-index:2;font-family:var(--font-mono);font-size:0.75rem;font-weight:500;padding:0.25rem 0.65rem;border-radius:999px;background-color:color-mix(in srgb,var(--paper) 85%,transparent);color:var(--ink);border:1px solid var(--line);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);user-select:none}.modal-thumbnails{display:flex;gap:0.5rem;margin-top:0.75rem;overflow-x:auto;padding-bottom:0.25rem;scrollbar-width:thin}.modal-thumb{flex:0 0 auto;width:4.5rem;height:2.625rem;padding:0;border:2px solid var(--line);border-radius:0.375rem;background-color:var(--accent-soft);cursor:pointer;overflow:hidden;transition:border-color 0.2s ease,transform 0.2s ease,opacity 0.2s ease;opacity:0.6}.modal-thumb:hover{opacity:1;border-color:var(--accent)}.modal-thumb.is-active,.modal-thumb[aria-selected="true"]{opacity:1;border-color:var(--accent);transform:scale(1.02)}.modal-thumb img{width:100%;height:100%;object-fit:contain;background-color:color-mix(in srgb,var(--ink) 4%,var(--surface));display:block}.modal-title{font-family:var(--font-display);font-size:1.5rem;font-weight:700;margin-bottom:0.75rem;padding-right:2rem}.modal-tags{display:flex;flex-wrap:wrap;gap:0.5rem;margin-bottom:1rem}.modal-tags span{display:inline-block;font-family:var(--font-mono);font-size:0.75rem;font-weight:500;letter-spacing:0.04em;color:var(--accent);background-color:var(--accent-soft);border-radius:999px;padding:0.25rem 0.75rem}.modal-description{font-family:var(--font-body);font-size:0.9375rem;line-height:var(--line-height-body);color:var(--muted);margin-bottom:1.25rem}.modal-actions{display:flex;flex-wrap:wrap;gap:0.75rem}.modal-button{display:inline-flex;align-items:center;justify-content:center;padding:0.75rem 1.5rem;font-family:var(--font-body);font-size:0.9375rem;font-weight:600;letter-spacing:0.02em;color:var(--accent);background-color:transparent;border:1px solid var(--accent);transition:color 0.2s ease,background-color 0.2s ease,border-color 0.2s ease}.modal-button:hover{color:var(--surface);background-color:var(--accent);border-color:var(--accent)}@media (max-height:600px){.modal-panel{max-height:calc(100vh - 1.25rem);padding:1rem}.modal-gallery-viewport{max-height:48vh}.modal-gallery-viewport.is-portrait{max-height:58vh}}