* { box-sizing: border-box; } body { margin: 0; } :root { --gw-color-primary: #4f46e5; --gw-color-secondary: #0b1220; --gw-color-accent: #22d3ee; --gw-color-success: #10b981; --gw-color-warning: #f59e0b; --gw-color-error: #ef4444; } .gw-body { background-color: #0b1220; color: #e5e7eb; font-size: 16px; line-height: 1.65; font-family: 'Inter', system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, "Apple Color Emoji", "Segoe UI Emoji"; } .gw-h1 { color: #f8fafc; font-size: 48px; line-height: 1.1; font-family: 'Sora', ui-sans-serif, system-ui; } .gw-h2 { color: #e2e8f0; font-size: 32px; line-height: 1.2; font-family: 'Sora', ui-sans-serif, system-ui; } .gw-button { background-color: var(--gw-color-primary); color: #ffffff; border-radius: 12px; } .gw-link { color: var(--gw-color-accent); text-decoration: none; } .gw-border { border-radius: 16px; border: 1px solid rgba(148, 163, 184, 0.22); } *, ::before, ::after { box-sizing: border-box; border-width: 0; border-style: solid; border-color: #e5e7eb; } html, :host { line-height: 1.5; -webkit-text-size-adjust: 100%; -moz-tab-size: 4; tab-size: 4; font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-feature-settings: normal; font-variation-settings: normal; -webkit-tap-highlight-color: transparent; } body { margin: 0; line-height: inherit; } hr { height: 0; color: inherit; border-top-width: 1px; } abbr:where([title]) { text-decoration: underline dotted; } h1, h2, h3, h4, h5, h6 { font-size: inherit; font-weight: inherit; } a { color: inherit; text-decoration: inherit; } b, strong { font-weight: bolder; } code, kbd, samp, pre { font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-feature-settings: normal; font-variation-settings: normal; font-size: 1em; } small { font-size: 80%; } sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } sub { bottom: -0.25em; } sup { top: -0.5em; } table { text-indent: 0; border-color: inherit; border-collapse: collapse; } button, input, optgroup, select, textarea { font-family: inherit; font-feature-settings: inherit; font-variation-settings: inherit; font-size: 100%; font-weight: inherit; line-height: inherit; letter-spacing: inherit; color: inherit; margin: 0; padding: 0; } button, select { text-transform: none; } button, input:where([type='button']), input:where([type='reset']), input:where([type='submit']) { -webkit-appearance: button; background-color: transparent; background-image: none; } :-moz-focusring { outline: auto; } :-moz-ui-invalid { box-shadow: none; } progress { vertical-align: baseline; } ::-webkit-inner-spin-button, ::-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; } blockquote, dl, dd, h1, h2, h3, h4, h5, h6, hr, figure, p, pre { margin: 0; } fieldset { margin: 0; padding: 0; } legend { padding: 0; } ol, ul, menu { list-style: none; margin: 0; padding: 0; } dialog { padding: 0; } textarea { resize: vertical; } input::placeholder, textarea::placeholder { opacity: 1; color: #9ca3af; } button, [role="button"] { cursor: pointer; } :disabled { cursor: default; } img, svg, video, canvas, audio, iframe, embed, object { display: block; } img, video { max-width: 100%; height: auto; } [hidden] { display: none; } .cls-ojppnp { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } .cls-ojppnp *::selection { background-color: rgb(99 102 241 / 0.2); color: rgb(199 210 254 / 1); } .cls-ojppnp *::selection:hover { color: rgb(199 210 254 / 1); } .cls-ojppnp *::selection::placeholder { color: rgb(199 210 254 / 1); } .cls-ojppnp *::selection::selection { color: rgb(199 210 254 / 1); } .cls-ojppnp::selection { background-color: rgb(99 102 241 / 0.2); } .cls-ojppnp::selection::selection { color: rgb(199 210 254 / 1); } .header-bar { position: sticky; top: 0px; z-index: 50; backdrop-filter: blur(8px); border-bottom-width: 1px; border-color: rgb(255 255 255 / 0.1); background-color: rgb(15 23 42 / 0.6); } .primary-navigation { max-width: 72rem; margin-left: auto; margin-right: auto; padding-left: 1.5rem; padding-right: 1.5rem; padding-top: 1rem; padding-bottom: 1rem; display: flex; align-items: center; justify-content: space-between; } .brand-link { display: flex; align-items: center; gap: 0.75rem; } .brand-mark { height: 2.25rem; width: 2.25rem; border-radius: 0.5rem; background-color: rgb(99 102 241 / 0.2); display: grid; place-items: center; } .brand-initials { color: rgb(165 180 252 / 1); font-weight: 600; } .brand-name { font-weight: 600; color: rgb(241 245 249 / 1); } .nav-links-list { display: none; align-items: center; gap: 1.5rem; } .nav-link-about:hover { color: rgb(165 180 252 / 1); } .nav-link-about { transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; } .nav-link-projects:hover { color: rgb(165 180 252 / 1); } .nav-link-projects { transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; } .nav-link-demo:hover { color: rgb(165 180 252 / 1); } .nav-link-demo { transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; } .nav-link-contact:hover { color: rgb(165 180 252 / 1); } .nav-link-contact { transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; } .header-cta-wrapper { display: flex; align-items: center; gap: 0.75rem; } .header-cta-button { padding-left: 1rem; padding-right: 1rem; padding-top: 0.5rem; padding-bottom: 0.5rem; font-size: 0.875rem; line-height: 1.25rem; font-weight: 500; transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; } .header-cta-button:hover { filter: brightness(1.1); } .hero-section { position: relative; } .hero-background-wrapper { position: absolute; inset: 0px; z-index: -10; } .hero-background-image-desktop { width: 100%; height: 100%; object-fit: cover; opacity: 0.2; } .hero-background-image-mobile { display: none; width: 100%; height: 100%; object-fit: cover; opacity: 0.25; } .hero-gradient-overlay { position: absolute; inset: 0px; background-image: linear-gradient(to bottom, rgb(15 23 42 / 0.6), rgb(15 23 42 / 0.7), rgb(15 23 42 / 0)); } .hero-container { max-width: 72rem; margin-left: auto; margin-right: auto; padding-left: 1.5rem; padding-right: 1.5rem; padding-top: 5rem; padding-bottom: 5rem; } .hero-content-wrapper { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 2.5rem; align-items: center; } .hero-text-column { grid-column: span 7 / span 7; } .hero-title { font-weight: 700; letter-spacing: -0.025em; } .hero-subtitle { margin-top: 1.25rem; color: rgb(203 213 225 / 1); max-width: 42rem; } .hero-actions { margin-top: 2rem; display: flex; align-items: center; gap: 1rem; } .hero-primary-cta { padding-left: 1.5rem; padding-right: 1.5rem; padding-top: 0.75rem; padding-bottom: 0.75rem; font-weight: 500; transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; } .hero-primary-cta:hover { filter: brightness(1.1); } .hero-secondary-cta { padding-left: 1.5rem; padding-right: 1.5rem; padding-top: 0.75rem; padding-bottom: 0.75rem; font-weight: 500; border-radius: 0.75rem; border-width: 1px; border-color: rgb(255 255 255 / 0.1); color: rgb(226 232 240 / 1); transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; } .hero-secondary-cta:hover { background-color: rgb(255 255 255 / 0.05); } .hero-highlights-list { margin-top: 2rem; display: flex; flex-wrap: wrap; align-items: center; gap: 1rem; font-size: 0.875rem; line-height: 1.25rem; color: rgb(148 163 184 / 1); } .hero-highlight-item { display: flex; align-items: center; gap: 0.5rem; } .hero-highlight-icon-performance { height: 1rem; width: 1rem; } .hero-highlight-icon-secure { height: 1rem; width: 1rem; } .hero-highlight-icon-accessible { height: 1rem; width: 1rem; } .hero-visual-column { grid-column: span 5 / span 5; } .hero-figure { overflow: hidden; } .hero-showcase-image { width: 100%; height: 360px; object-fit: cover; } .hero-figcaption { padding-left: 1.25rem; padding-right: 1.25rem; padding-top: 0.75rem; padding-bottom: 0.75rem; color: rgb(148 163 184 / 1); font-size: 0.875rem; line-height: 1.25rem; } .about-section { padding-top: 5rem; padding-bottom: 5rem; } .about-container { max-width: 72rem; margin-left: auto; margin-right: auto; padding-left: 1.5rem; padding-right: 1.5rem; } .about-header { display: flex; align-items: flex-end; justify-content: space-between; } .section-heading-about { font-weight: 600; } .about-resume-link:hover { color: rgb(165 180 252 / 1); } .about-resume-link { display: flex; align-items: center; gap: 0.5rem; } .external-link-icon { height: 1rem; width: 1rem; } .about-content-grid { margin-top: 2.5rem; display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 2.5rem; align-items: flex-start; } .about-photo-wrapper { grid-column: span 4 / span 4; } .about-portrait-figure { overflow: hidden; } .about-portrait-image { width: 100%; height: 380px; object-fit: cover; } .about-portrait-caption { padding-left: 1rem; padding-right: 1rem; padding-top: 0.75rem; padding-bottom: 0.75rem; color: rgb(148 163 184 / 1); font-size: 0.875rem; line-height: 1.25rem; } .about-text-wrapper { grid-column: span 8 / span 8; } .about-intro-paragraph { color: rgb(203 213 225 / 1); } .about-skills-definition-list { margin-top: 2rem; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.5rem; } .skill-group-title { color: rgb(226 232 240 / 1); font-weight: 500; } .skill-group-items { margin-top: 0.75rem; display: flex; flex-wrap: wrap; gap: 0.5rem; } .skill-chip { padding-left: 0.75rem; padding-right: 0.75rem; padding-top: 0.25rem; padding-bottom: 0.25rem; border-radius: 0.5rem; background-color: rgb(255 255 255 / 0.05); color: rgb(203 213 225 / 1); font-size: 0.875rem; line-height: 1.25rem; } .projects-section { padding-top: 5rem; padding-bottom: 5rem; } .projects-container { max-width: 72rem; margin-left: auto; margin-right: auto; padding-left: 1.5rem; padding-right: 1.5rem; } .projects-header { display: flex; align-items: flex-end; justify-content: space-between; } .section-heading-projects { font-weight: 600; } .projects-filter-hint { font-size: 0.875rem; line-height: 1.25rem; color: rgb(148 163 184 / 1); } .projects-grid { margin-top: 2.5rem; display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 2rem; } .project-card { grid-column: span 6 / span 6; } .project-article { overflow: hidden; } .project-image { width: 100%; height: 260px; object-fit: cover; } .project-media-caption { padding-left: 1.25rem; padding-right: 1.25rem; padding-top: 0.75rem; padding-bottom: 0.75rem; color: rgb(148 163 184 / 1); font-size: 0.875rem; line-height: 1.25rem; } .project-content { padding-left: 1.25rem; padding-right: 1.25rem; padding-bottom: 1.25rem; } .project-title { color: rgb(241 245 249 / 1); font-size: 1.25rem; line-height: 1.75rem; font-weight: 600; margin-top: 0.5rem; } .project-description { margin-top: 0.5rem; color: rgb(203 213 225 / 1); } .project-tech-list { margin-top: 0.75rem; display: flex; flex-wrap: wrap; gap: 0.5rem; } .project-tech-item { padding-left: 0.75rem; padding-right: 0.75rem; padding-top: 0.25rem; padding-bottom: 0.25rem; border-radius: 0.5rem; background-color: rgb(255 255 255 / 0.05); color: rgb(203 213 225 / 1); font-size: 0.875rem; line-height: 1.25rem; } .project-links { margin-top: 1rem; display: flex; align-items: center; gap: 1rem; } .project-demo-link:hover { color: rgb(165 180 252 / 1); } .project-demo-link { display: flex; align-items: center; gap: 0.5rem; } .project-external-icon { height: 1rem; width: 1rem; } .project-repo-link:hover { color: rgb(165 180 252 / 1); } .project-repo-link { display: flex; align-items: center; gap: 0.5rem; } .project-repo-icon { height: 1rem; width: 1rem; } .demo-section { padding-top: 5rem; padding-bottom: 5rem; } .demo-container { max-width: 72rem; margin-left: auto; margin-right: auto; padding-left: 1.5rem; padding-right: 1.5rem; } .demo-header { display: flex; align-items: flex-end; justify-content: space-between; } .section-heading-demo { font-weight: 600; } .demo-context-text { font-size: 0.875rem; line-height: 1.25rem; color: rgb(148 163 184 / 1); } .demo-grid { margin-top: 2.5rem; display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 2.5rem; align-items: flex-start; } .demo-player-wrapper { grid-column: span 8 / span 8; } .demo-player-frame { overflow: hidden; position: relative; padding-top: 56.25%; } .demo-iframe { position: absolute; inset: 0px; width: 100%; height: 100%; } .demo-details-aside { grid-column: span 4 / span 4; } .demo-details-card { padding: 1.25rem; } .demo-title { color: rgb(241 245 249 / 1); font-size: 1.25rem; line-height: 1.75rem; font-weight: 600; } .demo-description { margin-top: 0.75rem; color: rgb(203 213 225 / 1); } .demo-highlights-list { margin-top: 1rem; display: grid; grid-template-columns: repeat(1, minmax(0, 1fr)); gap: 0.5rem; color: rgb(203 213 225 / 1); } .demo-highlight-item { display: flex; align-items: center; gap: 0.5rem; } .demo-highlight-icon-1 { height: 1rem; width: 1rem; } .demo-highlight-icon-2 { height: 1rem; width: 1rem; } .demo-highlight-icon-3 { height: 1rem; width: 1rem; } .demo-actions { margin-top: 1.25rem; display: flex; align-items: center; gap: 0.75rem; } .demo-primary-link { padding-left: 1rem; padding-right: 1rem; padding-top: 0.5rem; padding-bottom: 0.5rem; font-weight: 500; transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; } .demo-primary-link:hover { filter: brightness(1.1); } .demo-secondary-link { padding-left: 1rem; padding-right: 1rem; padding-top: 0.5rem; padding-bottom: 0.5rem; font-weight: 500; border-radius: 0.75rem; border-width: 1px; border-color: rgb(255 255 255 / 0.1); color: rgb(226 232 240 / 1); transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; } .demo-secondary-link:hover { background-color: rgb(255 255 255 / 0.05); } .contact-section { padding-top: 5rem; padding-bottom: 5rem; } .contact-container { max-width: 72rem; margin-left: auto; margin-right: auto; padding-left: 1.5rem; padding-right: 1.5rem; } .contact-header { display: flex; align-items: flex-end; justify-content: space-between; } .section-heading-contact { font-weight: 600; } .contact-blurb { font-size: 0.875rem; line-height: 1.25rem; color: rgb(148 163 184 / 1); } .contact-grid { margin-top: 2.5rem; display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 2.5rem; align-items: flex-start; } .contact-form-wrapper { grid-column: span 7 / span 7; } .contact-form { padding: 1.5rem; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem; } .form-field-name { grid-column: span 1 / span 1; } .field-label { display: block; color: rgb(203 213 225 / 1); font-size: 0.875rem; line-height: 1.25rem; margin-bottom: 0.5rem; } .field-input { width: 100%; padding-left: 0.75rem; padding-right: 0.75rem; padding-top: 0.5rem; padding-bottom: 0.5rem; border-radius: 0.75rem; background-color: rgb(255 255 255 / 0.05); border-width: 1px; border-color: rgb(255 255 255 / 0.1); color: rgb(241 245 249 / 1); } .field-input::placeholder { color: rgb(100 116 139 / 1); } .field-input::placeholder::placeholder { color: rgb(100 116 139 / 1); } .field-input:focus { outline: 2px solid transparent; outline-offset: 2px; box-shadow: 0 0 0 0px #fff, 0 0 0 calc(2px + 0px) rgb(59 130 246 / 0.5), 0 0 #0000; } .form-field-email { grid-column: span 1 / span 1; } .form-field-message { grid-column: span 2 / span 2; } .field-textarea { width: 100%; padding-left: 0.75rem; padding-right: 0.75rem; padding-top: 0.5rem; padding-bottom: 0.5rem; border-radius: 0.75rem; background-color: rgb(255 255 255 / 0.05); border-width: 1px; border-color: rgb(255 255 255 / 0.1); color: rgb(241 245 249 / 1); } .field-textarea::placeholder { color: rgb(100 116 139 / 1); } .field-textarea::placeholder::placeholder { color: rgb(100 116 139 / 1); } .field-textarea:focus { outline: 2px solid transparent; outline-offset: 2px; box-shadow: 0 0 0 0px #fff, 0 0 0 calc(2px + 0px) rgb(59 130 246 / 0.5), 0 0 #0000; } .form-actions { grid-column: span 2 / span 2; display: flex; align-items: center; justify-content: space-between; } .contact-socials { display: flex; align-items: center; gap: 1rem; } .social-link-email:hover { color: rgb(165 180 252 / 1); } .social-link-email { display: flex; align-items: center; gap: 0.5rem; } .social-icon-email { height: 1.25rem; width: 1.25rem; } .social-link-github:hover { color: rgb(165 180 252 / 1); } .social-link-github { display: flex; align-items: center; gap: 0.5rem; } .social-icon-github { height: 1.25rem; width: 1.25rem; } .social-link-linkedin:hover { color: rgb(165 180 252 / 1); } .social-link-linkedin { display: flex; align-items: center; gap: 0.5rem; } .social-icon-linkedin { height: 1.25rem; width: 1.25rem; } .form-submit-button { padding-left: 1.5rem; padding-right: 1.5rem; padding-top: 0.75rem; padding-bottom: 0.75rem; font-weight: 500; transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; } .form-submit-button:hover { filter: brightness(1.1); } .contact-aside { grid-column: span 5 / span 5; } .contact-aside-card { padding: 1.5rem; } .contact-aside-title { color: rgb(241 245 249 / 1); font-size: 1.25rem; line-height: 1.75rem; font-weight: 600; } .contact-aside-text { margin-top: 0.75rem; color: rgb(203 213 225 / 1); } .contact-highlights-list { margin-top: 1rem; display: grid; grid-template-columns: repeat(1, minmax(0, 1fr)); gap: 0.5rem; color: rgb(203 213 225 / 1); } .contact-highlight-item { display: flex; align-items: center; gap: 0.5rem; } .contact-highlight-icon-1 { height: 1rem; width: 1rem; } .contact-highlight-icon-2 { height: 1rem; width: 1rem; } .contact-highlight-icon-3 { height: 1rem; width: 1rem; } .contact-aside-visual { margin-top: 1.5rem; overflow: hidden; } .contact-aside-image { width: 100%; height: 200px; object-fit: cover; } .site-footer { border-top-width: 1px; border-color: rgb(255 255 255 / 0.1); } .footer-container { max-width: 72rem; margin-left: auto; margin-right: auto; padding-left: 1.5rem; padding-right: 1.5rem; padding-top: 2.5rem; padding-bottom: 2.5rem; } .footer-top { display: flex; align-items: center; justify-content: space-between; } .footer-brand { display: flex; align-items: center; gap: 0.75rem; } .footer-brand-mark { height: 2.25rem; width: 2.25rem; border-radius: 0.5rem; background-color: rgb(99 102 241 / 0.2); display: grid; place-items: center; } .footer-brand-initials { color: rgb(165 180 252 / 1); font-weight: 600; } .footer-brand-name { font-weight: 600; color: rgb(241 245 249 / 1); } .footer-nav { display: flex; align-items: center; gap: 1.5rem; } .footer-nav-link:hover { color: rgb(165 180 252 / 1); } .footer-bottom { margin-top: 2rem; display: flex; align-items: center; justify-content: space-between; } .footer-copyright { color: rgb(148 163 184 / 1); font-size: 0.875rem; line-height: 1.25rem; } .footer-socials { display: flex; align-items: center; gap: 0.75rem; } .footer-social-link:hover { color: rgb(165 180 252 / 1); } .footer-social-icon { height: 1.25rem; width: 1.25rem; } @media (max-width: 992px) { .nav-links-list { display: flex; } .hero-background-image-desktop { display: none; } .hero-container { padding-top: 4rem; padding-bottom: 4rem; } .hero-text-column { grid-column: span 12 / span 12; } .hero-visual-column { grid-column: span 12 / span 12; } .hero-showcase-image { height: 300px; } .about-section { padding-top: 4rem; padding-bottom: 4rem; } .about-photo-wrapper { grid-column: span 12 / span 12; } .about-portrait-image { height: 300px; } .about-text-wrapper { grid-column: span 12 / span 12; } .about-skills-definition-list { grid-template-columns: repeat(2, minmax(0, 1fr)); } .projects-section { padding-top: 4rem; padding-bottom: 4rem; } .project-card { grid-column: span 12 / span 12; } .project-image { height: 220px; } .demo-section { padding-top: 4rem; padding-bottom: 4rem; } .demo-player-wrapper { grid-column: span 12 / span 12; } .demo-details-aside { grid-column: span 12 / span 12; } .contact-section { padding-top: 4rem; padding-bottom: 4rem; } .contact-form-wrapper { grid-column: span 12 / span 12; } .form-field-name { grid-column: span 2 / span 2; } .form-field-email { grid-column: span 2 / span 2; } .contact-aside { grid-column: span 12 / span 12; } .footer-top { flex-direction: column; align-items: flex-start; gap: 1.5rem; } .footer-bottom { flex-direction: column; align-items: flex-start; gap: 1rem; } } @media (max-width: 480px) { .hero-background-image-mobile { display: block; } .hero-container { padding-top: 3rem; padding-bottom: 3rem; } .hero-showcase-image { height: 220px; } .about-section { padding-top: 3rem; padding-bottom: 3rem; } .about-portrait-image { height: 220px; } .about-skills-definition-list { grid-template-columns: repeat(1, minmax(0, 1fr)); } .projects-section { padding-top: 3rem; padding-bottom: 3rem; } .project-image { height: 180px; } .demo-section { padding-top: 3rem; padding-bottom: 3rem; } .contact-section { padding-top: 3rem; padding-bottom: 3rem; } }