.hero-full[data-astro-cid-wdpwxqgy]{--hero-enter-distance:24px;--hero-enter-duration:.8s;--hero-enter-ease:cubic-bezier(.22, 1, .36, 1);justify-content:center;align-items:center;width:100%;height:auto;min-height:clamp(450px,65vh,800px);display:flex;position:relative;overflow:visible}.hero-shell[data-astro-cid-wdpwxqgy]{width:100%;max-width:var(--container-xl);padding-inline:var(--container-padding);padding-top:var(--space-20);padding-bottom:var(--space-10);margin-inline:auto}.hero-columns[data-astro-cid-wdpwxqgy]{justify-content:center;gap:var(--space-12);text-align:left;grid-template-columns:auto auto;align-items:flex-start;display:grid}.hero-title[data-astro-cid-wdpwxqgy]{font-family:"Poiret One", var(--font-heading);letter-spacing:var(--tracking-normal);margin-top:0;margin-bottom:var(--space-1);color:var(--color-text-primary);font-size:clamp(2.5rem,6vw,4.5rem);font-weight:400;line-height:1}.hero-title[data-astro-cid-wdpwxqgy] a[data-astro-cid-wdpwxqgy]{color:inherit;text-decoration:none}.hero-brand-column[data-astro-cid-wdpwxqgy]{padding-top:var(--space-4);position:relative}.hero-brand-column[data-astro-cid-wdpwxqgy]:before{content:"";background:var(--color-text-primary);opacity:.9;width:100%;height:4px;position:absolute;top:0;left:0}.hero-subtitle-tag[data-astro-cid-wdpwxqgy]{font-family:var(--font-accent);font-size:var(--text-base);letter-spacing:.15em;text-transform:lowercase;color:var(--color-accent);opacity:.9;margin-left:2px;font-weight:500}.hero-intro-column[data-astro-cid-wdpwxqgy]{gap:var(--space-8);flex-direction:column;padding-top:0;display:flex}.hero-intro-text[data-astro-cid-wdpwxqgy]{font-size:clamp(var(--text-lg), 2vw, var(--text-xl));color:var(--color-text-primary);max-width:48ch;font-weight:450;line-height:1.4}.hero-cta-wrapper[data-astro-cid-wdpwxqgy]{margin-top:var(--space-10);align-items:center;gap:var(--space-6);flex-wrap:wrap;display:flex}.hero-button[data-astro-cid-wdpwxqgy]{background:var(--surface-neumo-raised);box-shadow:var(--shadow-neumo-sm);border-radius:var(--surface-radius-inner);font-family:var(--font-accent);font-size:var(--text-base);color:var(--color-text-secondary);align-items:center;gap:var(--space-3);transition:all var(--duration-normal) var(--ease-out);border:1px solid #fff6;padding:10px 24px;font-weight:500;text-decoration:none;display:inline-flex}.hero-button[data-astro-cid-wdpwxqgy]:hover{box-shadow:var(--shadow-neumo-md);color:var(--color-accent);transform:translateY(-2px)}.hero-button[data-astro-cid-wdpwxqgy]:active{box-shadow:var(--shadow-neumo-pressed);transform:translateY(0)}.button-icon[data-astro-cid-wdpwxqgy]{transition:transform var(--duration-normal) var(--ease-out);font-size:1.1em;display:inline-block}.hero-button[data-astro-cid-wdpwxqgy]:hover .button-icon[data-astro-cid-wdpwxqgy]{transform:translate(4px)}.hero-button[data-astro-cid-wdpwxqgy]:nth-child(2):hover .button-icon[data-astro-cid-wdpwxqgy]{transform:translateY(4px)}@media screen and (prefers-reduced-motion:no-preference){.hero-brand-column[data-astro-cid-wdpwxqgy]:before{transform-origin:0;animation:hero-rule-enter var(--hero-enter-duration) var(--hero-enter-ease) backwards}.hero-title[data-astro-cid-wdpwxqgy],.hero-subtitle-tag[data-astro-cid-wdpwxqgy],.hero-intro-text[data-astro-cid-wdpwxqgy],.hero-cta-wrapper[data-astro-cid-wdpwxqgy]{animation:hero-content-enter var(--hero-enter-duration) var(--hero-enter-ease) var(--hero-enter-delay) backwards}.hero-title[data-astro-cid-wdpwxqgy]{--hero-enter-delay:70ms}.hero-subtitle-tag[data-astro-cid-wdpwxqgy]{--hero-enter-delay:.15s;--hero-enter-opacity:.9}.hero-intro-text[data-astro-cid-wdpwxqgy]{--hero-enter-delay:.23s}.hero-cta-wrapper[data-astro-cid-wdpwxqgy]{--hero-enter-delay:.31s}.hero-title[data-astro-cid-wdpwxqgy]:has(:focus-visible),.hero-cta-wrapper[data-astro-cid-wdpwxqgy]:has(:focus-visible){animation:none}}@keyframes hero-content-enter{0%{opacity:0;translate:0 var(--hero-enter-distance)}to{opacity:var(--hero-enter-opacity,1);translate:0}}@keyframes hero-rule-enter{0%{transform:scaleX(0)}to{transform:scaleX(1)}}@media (width>=1025px) and (prefers-reduced-motion:no-preference){@supports (animation-timeline:view()){.hero-full[data-astro-cid-wdpwxqgy]{view-timeline:--hero-exit block}.hero-brand-column[data-astro-cid-wdpwxqgy],.hero-intro-column[data-astro-cid-wdpwxqgy]{animation:linear both hero-drift --hero-exit;animation-range:exit}.hero-brand-column[data-astro-cid-wdpwxqgy]{--hero-drift:36px}.hero-intro-column[data-astro-cid-wdpwxqgy]{--hero-drift:18px}}}@keyframes hero-drift{0%{translate:0}to{translate:0 var(--hero-drift)}}@media (width<=1024px){.hero-columns[data-astro-cid-wdpwxqgy]{justify-content:flex-start;gap:var(--space-8);grid-template-columns:1fr}.hero-shell[data-astro-cid-wdpwxqgy]{padding-top:var(--space-12)}.hero-intro-text[data-astro-cid-wdpwxqgy]{max-width:none}}@media (width<=768px){.hero-full[data-astro-cid-wdpwxqgy]{--hero-enter-distance:16px;--hero-enter-duration:.7s}}.about-section[data-astro-cid-qsxgxuos]{padding-top:var(--space-12);padding-bottom:var(--space-12);max-width:var(--container-xl)}.section-header[data-astro-cid-qsxgxuos]{margin-bottom:var(--space-8);text-align:center;align-items:center;gap:var(--space-2);flex-direction:column;display:flex;position:relative}.accent-line[data-astro-cid-qsxgxuos]{background-color:var(--color-text-primary);opacity:.9;width:100px;height:4px;box-shadow:0 2px 6px color-mix(in srgb, var(--color-text-primary) 18%, transparent);margin-inline:auto}.experience-block[data-astro-cid-qsxgxuos]{gap:var(--space-4);margin-top:var(--space-8);flex-direction:column;display:flex}.timeline[data-astro-cid-qsxgxuos]{flex-direction:column;display:flex}.timeline-item[data-astro-cid-qsxgxuos]{padding:var(--surface-padding-sm);margin-inline:calc(-1 * var(--surface-padding-sm));border-bottom:1px solid var(--color-border-subtle);border-radius:var(--surface-radius-sm);transition:box-shadow var(--duration-normal) var(--ease-out), transform var(--duration-normal) var(--ease-out), background var(--duration-normal) var(--ease-out)}.timeline-item[data-astro-cid-qsxgxuos]:last-child{border-bottom:none}.timeline-item[data-astro-cid-qsxgxuos]:hover{background:color-mix(in srgb, var(--color-background) 85%, white);box-shadow:var(--shadow-neumo-sm);transform:translateY(-1px)}.timeline-content[data-astro-cid-qsxgxuos]{gap:var(--surface-gap-lg);grid-template-columns:200px 1fr;align-items:baseline;display:grid}.timeline-date[data-astro-cid-qsxgxuos]{font-size:var(--text-xs);letter-spacing:var(--tracking-wide);text-transform:uppercase;margin-top:0;font-weight:600}.timeline-company[data-astro-cid-qsxgxuos]{font-size:var(--text-sm);transition:color var(--duration-normal) var(--ease-out);color:var(--color-text-muted)}@media (width<=768px){.about-section[data-astro-cid-qsxgxuos]{padding-top:0;padding-bottom:var(--space-12)}.section-header[data-astro-cid-qsxgxuos]{margin-bottom:var(--space-8)}.experience-block[data-astro-cid-qsxgxuos]{margin-top:var(--space-16);gap:var(--space-6)}.timeline[data-astro-cid-qsxgxuos]{margin-left:0;padding-left:0}.timeline-content[data-astro-cid-qsxgxuos]{gap:var(--space-2);grid-template-columns:1fr}}.projects-section{padding-block:clamp(4rem,8vw,7rem)}.projects-header{gap:1.5rem;margin-bottom:clamp(3rem,6vw,5rem);display:grid}.projects-header__line{background:var(--color-text-primary);width:96px;height:3px}.projects-header__copy{grid-template-columns:1fr 1fr;align-items:end;gap:1rem 3rem;display:grid}.projects-header__kicker{color:var(--color-text-muted);font-size:var(--text-xs);letter-spacing:.12em;text-transform:uppercase;grid-column:1/-1}.projects-header__title{font:300 clamp(3rem, 5vw, 5rem) / 1 var(--font-heading);letter-spacing:-.04em}.projects-header__intro{max-width:44ch;font-size:var(--text-lg);color:var(--color-text-secondary);line-height:1.65}.projects-grid{gap:clamp(3rem,6vw,6rem);display:grid}.project-card-shell{min-width:0}.project-card{isolation:isolate;color:var(--color-text-primary);border-top:1px solid var(--color-border-subtle);grid-template-columns:minmax(0,.78fr) minmax(0,1.22fr);align-items:center;gap:clamp(2rem,4vw,4rem);padding-top:clamp(1.5rem,3vw,2.5rem);text-decoration:none;display:grid;position:relative}.project-card__link{z-index:1;border-radius:4px;position:absolute;inset:0}.project-card__link:focus-visible{outline:none}.project-card-shell:nth-child(2n) .project-card{grid-template-columns:minmax(0,1.22fr) minmax(0,.78fr)}.project-card-shell:nth-child(2n) .project-card__copy{order:2}.project-card__copy{min-width:0;padding-block:.5rem}.project-card--text-only .project-card__copy{grid-column:1/-1;grid-template-columns:minmax(0,.78fr) minmax(0,1.22fr);align-items:start;column-gap:clamp(2rem,4vw,4rem);display:grid}.project-card--text-only .project-card__eyebrow{grid-column:1/-1}.project-card--text-only .project-card__title{grid-area:2/1}.project-card--text-only .project-card__summary{grid-area:2/2;max-width:52ch;margin-top:0}.project-card--text-only .project-card__stack{grid-area:3/1}.project-card--text-only .project-card__action{grid-area:3/2;justify-self:start}.project-card__eyebrow{font-size:var(--text-xs);color:var(--color-text-muted);align-items:baseline;gap:1rem;margin-bottom:1.5rem;line-height:1.6;display:flex}.project-card__eyebrow>span{font-variant-numeric:tabular-nums}.project-card__title{font:400 clamp(2.25rem, 3.2vw, 3.75rem) / 1.1 var(--font-heading);letter-spacing:-.035em;overflow-wrap:anywhere}.project-card__summary{color:var(--color-text-secondary);text-wrap:pretty;max-width:35ch;margin-top:1.25rem;font-size:clamp(1rem,1.4vw,1.2rem);line-height:1.7}.project-card__stack{font-size:var(--text-xs);color:var(--color-text-muted);margin-top:1.5rem;line-height:1.7}.project-card__action{border-radius:var(--radius-full);background:linear-gradient(135deg, #ffffff1a, transparent 50%), var(--surface-neumo-raised);min-height:48px;box-shadow:var(--shadow-neumo-sm);color:var(--color-text-secondary);font-size:var(--text-sm);letter-spacing:var(--tracking-wide);transition:color var(--duration-fast) var(--ease-out), box-shadow var(--duration-fast) var(--ease-out), transform var(--duration-fast) var(--ease-out);border:1px solid #ffffff4d;justify-content:center;align-items:center;gap:1rem;margin-top:1.5rem;padding:.75rem 1.5rem;font-weight:600;display:inline-flex}.project-card__action>span{font-size:1.4em;transition:transform .24s}.card-image-only{aspect-ratio:4/3;background:var(--color-background-subtle);border-radius:12px;min-width:0;position:relative;overflow:hidden}.project-image-parallax{width:100%;height:100%}.card-image-only img{object-fit:cover;width:100%;height:100%;transition:transform .8s cubic-bezier(.22,1,.36,1);display:block}.project-card__image-note{background:var(--color-background);color:var(--color-text-primary);font-size:var(--text-xs);opacity:0;border-radius:4px;padding:.7rem 1rem;transition:opacity .24s,transform .24s;position:absolute;bottom:1rem;right:1rem;transform:translateY(8px)}.project-card:has(>.project-card__link:focus-visible){outline:2px solid var(--color-accent);outline-offset:8px;border-radius:4px}.project-card:has(>.project-card__link:focus-visible) .project-card__image-note{opacity:1;transform:none}.project-card:has(>.project-card__link:focus-visible) .project-card__action{color:var(--color-text-primary);box-shadow:var(--shadow-neumo-md)}@media (hover:hover){.project-card:hover .project-card__action{color:var(--color-text-primary);box-shadow:var(--shadow-neumo-md)}}@media (hover:hover) and (prefers-reduced-motion:no-preference){.project-card:hover .card-image-only img{transform:scale(1.025)}.project-card:hover .project-card__action>span{transform:translate(3px,-3px)}.project-card:hover .project-card__action{transform:translateY(-2px)}.project-card:hover .project-card__image-note{opacity:1;transform:none}}.project-card:active .project-card__action{box-shadow:var(--shadow-neumo-pressed);transform:none}@media (prefers-reduced-motion:no-preference){[data-reveal-state=revealed] .project-image-parallax{animation:project-image-settle 1s cubic-bezier(.22, 1, .36, 1) var(--reveal-delay,0s) backwards}}@keyframes project-image-settle{0%{transform:scale(1.035)}to{transform:scale(1)}}@media (width>=769px) and (prefers-reduced-motion:no-preference){@supports (animation-timeline:view()){.project-card-shell{view-timeline:--project-card block}.project-card-shell .project-image-parallax{animation:linear both project-image-drift --project-card;animation-range:cover}}}@keyframes project-image-drift{0%{transform:translateY(1%)scale(1.035)}to{transform:translateY(-1%)scale(1.02)}}.oss-container{margin-top:clamp(4rem,8vw,7rem)}.oss-container-header{border-bottom:1px solid var(--color-border-subtle);padding-bottom:1rem}.oss-container-header .overline{font-size:var(--text-xs);color:var(--color-text-primary);letter-spacing:.08em}.oss-list{display:grid}.oss-item{border-bottom:1px solid var(--color-border-subtle);color:var(--color-text-primary);justify-content:space-between;align-items:center;gap:1.5rem;padding-block:1.5rem;display:flex}.oss-item-main{gap:.5rem;min-width:0;display:grid}.oss-type{font-size:var(--text-xs);color:var(--color-text-muted)}.oss-title{font-size:var(--text-xl);overflow-wrap:anywhere;font-weight:500}.oss-desc{font-size:var(--text-sm);color:var(--color-text-secondary);line-height:1.6}.oss-arrow{flex-shrink:0}@media (width<=760px){.projects-header__copy{grid-template-columns:1fr}.projects-header__intro{margin-top:.5rem;font-size:1rem}.project-card,.project-card-shell:nth-child(2n) .project-card{grid-template-columns:1fr;gap:1.5rem}.project-card-shell:nth-child(2n) .project-card__copy{order:0}.project-card--text-only .project-card__copy{display:block}.project-card__eyebrow{margin-bottom:1rem}.project-card__summary,.project-card--text-only .project-card__summary{max-width:100%;margin-top:.75rem}.project-card__stack{margin-top:1rem}.project-card__action{margin-top:.75rem}.project-card__image-note{display:none}}@media (prefers-reduced-motion:reduce),print{.project-card-shell .project-image-parallax{animation:none;transform:none}.card-image-only img,.project-card__action,.project-card__action>span,.project-card__image-note{transition:none}}.contact-section[data-astro-cid-5p6sqsvn]{padding-top:var(--space-12);padding-bottom:var(--space-12)}.section-header[data-astro-cid-5p6sqsvn]{margin-bottom:var(--space-8);text-align:center;align-items:center;gap:var(--space-2);flex-direction:column;display:flex;position:relative}.accent-line[data-astro-cid-5p6sqsvn]{background-color:var(--color-text-primary);opacity:.9;width:100px;height:4px;box-shadow:0 2px 6px color-mix(in srgb, var(--color-text-primary) 18%, transparent);margin-inline:auto}.heading-2[data-astro-cid-5p6sqsvn]{font-family:var(--font-heading);letter-spacing:var(--tracking-normal);font-weight:300}.contact-bento-grid[data-astro-cid-5p6sqsvn]{gap:var(--surface-gap-sm);margin-top:var(--space-12);grid-template-columns:repeat(3,1fr);max-width:1000px;margin-inline:auto;display:grid}.contact-tile[data-astro-cid-5p6sqsvn]{background:linear-gradient(135deg, #fff3 0%, transparent 50%), color-mix(in srgb, var(--surface-neumo) 85%, transparent);border-radius:var(--surface-radius-md);min-width:0;padding:var(--surface-padding-lg);color:var(--color-text-primary);-webkit-backdrop-filter:blur(12px);transition:transform var(--duration-fast) var(--ease-out), box-shadow var(--duration-fast) var(--ease-out), background var(--duration-fast) var(--ease-out);min-height:var(--surface-min-lg);box-shadow:var(--shadow-neumo-md);border:1px solid #ffffff4d;flex-direction:column;justify-content:space-between;text-decoration:none;display:flex;position:relative;overflow:hidden}.contact-tile[data-astro-cid-5p6sqsvn]:before{content:"";border-radius:inherit;pointer-events:none;opacity:.6;transition:opacity var(--duration-fast) var(--ease-out);background:radial-gradient(at 15% 10%,#ffffff2e,#0000 32%),linear-gradient(135deg,#ffffff14,#0000 55%);position:absolute;inset:1px}.contact-tile[data-astro-cid-5p6sqsvn]:hover{background:linear-gradient(135deg, #ffffff3d 0%, transparent 48%), color-mix(in srgb, var(--color-background-subtle) 40%, white);box-shadow:var(--shadow-neumo-hover);border-color:#ffffff80;transform:translateY(-3px)}.contact-tile[data-astro-cid-5p6sqsvn]:active{box-shadow:var(--shadow-neumo-pressed);transform:translateY(0)}.contact-tile[data-astro-cid-5p6sqsvn]:hover:before{opacity:.95}.contact-tile[data-astro-cid-5p6sqsvn]:focus-visible{outline:2px solid color-mix(in srgb, var(--color-accent) 70%, transparent);outline-offset:6px}.email-tile[data-astro-cid-5p6sqsvn]{border-radius:var(--surface-radius-lg);flex-direction:row;grid-column:span 3;align-items:flex-end}.social-tile[data-astro-cid-5p6sqsvn]{min-height:var(--surface-min-md);padding:var(--surface-padding-md);box-shadow:var(--shadow-neumo-sm);grid-column:span 1}.tile-content[data-astro-cid-5p6sqsvn]{gap:var(--space-2);z-index:1;flex-direction:column;min-width:0;display:flex}.email-tile[data-astro-cid-5p6sqsvn] .overline[data-astro-cid-5p6sqsvn]{letter-spacing:var(--tracking-widest)}.email-address[data-astro-cid-5p6sqsvn]{font-family:var(--font-heading);letter-spacing:var(--tracking-normal);overflow-wrap:anywhere;margin:0;font-size:clamp(1.8rem,4vw,3rem);font-weight:700}.tile-action[data-astro-cid-5p6sqsvn]{align-items:center;gap:var(--space-2);width:fit-content;min-height:40px;padding:0 var(--space-4);border-radius:var(--radius-full);background:linear-gradient(135deg, #ffffff1a, transparent 50%), var(--surface-neumo-raised);box-shadow:var(--shadow-neumo-sm);color:var(--color-text-muted);transition:color var(--duration-fast), box-shadow var(--duration-fast) var(--ease-out), transform var(--duration-fast) var(--ease-out);z-index:1;display:flex}.action-text[data-astro-cid-5p6sqsvn]{letter-spacing:var(--tracking-wide);font-weight:600}.action-icon[data-astro-cid-5p6sqsvn]{font-size:var(--text-xl);transition:transform var(--duration-fast)}.contact-tile[data-astro-cid-5p6sqsvn]:hover .action-icon[data-astro-cid-5p6sqsvn]{transform:translate(2px,-2px)}.social-name[data-astro-cid-5p6sqsvn]{font-family:var(--font-heading);font-size:var(--text-2xl);letter-spacing:var(--tracking-normal);font-weight:700}.social-meta[data-astro-cid-5p6sqsvn]{font-family:var(--font-body);font-size:var(--text-sm);text-transform:uppercase;letter-spacing:var(--tracking-wide);overflow-wrap:anywhere}.site-footer[data-astro-cid-5p6sqsvn]{padding-top:var(--space-20);padding-bottom:var(--space-10);text-align:center;align-items:center;gap:var(--space-5);flex-direction:column;display:flex}.accent-line-small[data-astro-cid-5p6sqsvn]{background-color:var(--color-text-primary);border-radius:0;width:48px;height:3px}@media (width<=900px){.email-tile[data-astro-cid-5p6sqsvn]{align-items:flex-start;gap:var(--surface-gap-lg);flex-direction:column}}@media (width<=768px){.contact-bento-grid[data-astro-cid-5p6sqsvn]{grid-template-columns:1fr 1fr}.email-tile[data-astro-cid-5p6sqsvn]{grid-column:span 2}}@media (width<=480px){.contact-bento-grid[data-astro-cid-5p6sqsvn]{gap:var(--surface-gap-sm);grid-template-columns:1fr}.email-tile[data-astro-cid-5p6sqsvn]{grid-column:span 1}.contact-tile[data-astro-cid-5p6sqsvn]{padding:var(--surface-padding-md);min-height:var(--surface-min-md);box-shadow:var(--shadow-neumo-sm), inset 1px 1px 0 #ffffff47}.email-address[data-astro-cid-5p6sqsvn]{font-size:clamp(1.4rem,6vw,1.8rem)}}.modal-container{--modal-duration:.26s;--modal-ease:cubic-bezier(.22, 1, .36, 1);z-index:1600;padding:max(clamp(var(--surface-padding-sm), 3vw, var(--surface-padding-lg)), env(safe-area-inset-top)) max(clamp(var(--surface-padding-sm), 3vw, var(--surface-padding-lg)), env(safe-area-inset-right)) max(clamp(var(--surface-padding-sm), 3vw, var(--surface-padding-lg)), env(safe-area-inset-bottom)) max(clamp(var(--surface-padding-sm), 3vw, var(--surface-padding-lg)), env(safe-area-inset-left));overscroll-behavior:contain;place-items:center;display:grid;position:fixed;inset:0}.modal-container[hidden]{display:none}.project-modal-panel__primary-action[hidden],.project-modal-panel__actions:has(>[data-project-visit][hidden]),.project-modal-panel__media[hidden],.project-gallery[hidden],.project-modal-panel__block[hidden]{display:none!important}.modal-container[data-state=open]{--modal-duration:.42s}.modal-backdrop{background:radial-gradient(circle at top, color-mix(in srgb, var(--color-brand-strong) 10%, transparent), transparent 34%), color-mix(in srgb, var(--color-background) 70%, #0a10146b);backdrop-filter:blur(24px)saturate(1.05);cursor:pointer;opacity:0;transition:opacity var(--modal-duration) var(--modal-ease);border:0;position:absolute;inset:0}.modal-container[data-state=open] .modal-backdrop{opacity:1}.modal-dialog{border-radius:var(--surface-radius-lg);background:var(--color-background);width:min(1320px,100%);height:min(92dvh,920px);max-height:min(92dvh,920px);box-shadow:var(--shadow-neumo-lg), 0 32px 90px color-mix(in srgb, var(--shadow-neumo-base) 18%, transparent), inset 0 1px 0 #ffffff4d;opacity:0;transition:transform var(--modal-duration) var(--modal-ease), opacity var(--modal-duration) var(--modal-ease);border:0;position:relative;overflow:hidden;transform:translateY(22px)scale(.985)}.modal-container[data-state=open] .modal-dialog{opacity:1;transform:translateY(0)scale(1)}.modal-dialog:focus{outline:none}.modal-dialog__frame{grid-template-columns:240px minmax(0,1fr);height:100%;min-height:0;display:grid}.modal-rail{--color-text-muted:var(--color-text-secondary);align-content:start;gap:var(--surface-gap-lg);min-height:0;padding:clamp(var(--surface-padding-md), 3vw, var(--surface-padding-lg));background:var(--color-background-subtle);box-shadow:inset -1px 0 0 color-mix(in srgb, var(--shadow-neumo-base) 7%, transparent);border-right:0;grid-template-rows:auto minmax(0,1fr);display:grid}.modal-rail__header{gap:var(--space-3);display:grid}.modal-rail__eyebrow,.modal-main__eyebrow,.project-modal-panel__kicker,.project-modal-panel__label{color:var(--color-text-muted);font-size:var(--text-xs);letter-spacing:var(--tracking-widest);text-transform:uppercase}.modal-rail__intro{color:var(--color-text-secondary);font-size:var(--text-sm);line-height:var(--leading-relaxed)}.modal-rail__list{align-content:start;gap:var(--space-3);overscroll-behavior:contain;min-height:0;padding-right:var(--space-1);display:grid;overflow:clip auto}.modal-project-switch{gap:var(--surface-gap-sm);width:100%;padding:var(--surface-padding-sm);border-radius:var(--surface-radius-sm);color:var(--color-text-primary);text-align:left;transition:transform var(--duration-fast) var(--ease-out), box-shadow var(--duration-fast) var(--ease-out), background var(--duration-fast) var(--ease-out);cursor:pointer;box-shadow:none;background:0 0;border:0;grid-template-columns:auto minmax(0,1fr);display:grid}.modal-project-switch:hover,.modal-project-switch:focus-visible,.modal-project-switch[data-active]{background:var(--color-background);box-shadow:inset 2px 0 var(--color-accent);outline:none;transform:translate(3px)}.modal-project-switch__index{color:var(--color-text-muted);font-size:var(--text-xs);letter-spacing:var(--tracking-widest);padding-top:2px}.modal-project-switch__copy{gap:var(--space-1);display:grid}.modal-project-switch__title{font-family:var(--font-heading);font-size:var(--text-2xl);color:var(--color-text-primary);line-height:1}.modal-project-switch__meta{color:var(--color-text-secondary);font-size:var(--text-sm);line-height:var(--leading-relaxed);-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.modal-main{background:0 0;grid-template-rows:auto auto minmax(0,1fr);min-height:0;display:grid}.modal-main__topbar{z-index:2;justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-5) clamp(var(--space-5), 3vw, var(--space-8));border-bottom:1px solid color-mix(in srgb, white 18%, var(--color-border-subtle));background:color-mix(in srgb, var(--color-background) 76%, transparent);backdrop-filter:blur(18px)saturate(1.05);display:flex;position:sticky;top:0}.modal-close{justify-content:center;align-items:center;gap:var(--space-2);height:44px;padding-inline:var(--space-4);background:linear-gradient(180deg, #ffffff24, transparent), var(--surface-neumo-raised);color:var(--color-text-primary);cursor:pointer;box-shadow:var(--shadow-neumo-sm);transition:transform var(--duration-fast) var(--ease-out), box-shadow var(--duration-fast) var(--ease-out);border:0;border-radius:999px;font-size:1.6rem;line-height:1;display:inline-flex}.modal-close__label{font-size:var(--text-xs);font-weight:var(--font-semibold);letter-spacing:var(--tracking-wide);text-transform:uppercase}.modal-close:hover,.modal-close:focus-visible{box-shadow:var(--shadow-neumo-pressed);outline:none;transform:translateY(-1px)}.modal-project-tabs{display:none}.modal-project-tab{align-items:center;gap:var(--space-2);min-height:44px;padding-inline:var(--space-4);border:1px solid var(--color-border-subtle);background:color-mix(in srgb, var(--color-background) 88%, transparent);color:var(--color-text-secondary);font-size:var(--text-sm);cursor:pointer;border-radius:999px;flex:none;display:inline-flex}.modal-project-tab[aria-pressed=true]{border-color:var(--color-accent);background:var(--color-accent);color:var(--color-background)}.modal-body{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;touch-action:pan-y;min-height:0;padding:clamp(var(--space-5), 3vw, var(--surface-padding-lg));align-content:start;gap:clamp(1.5rem,3vw,2.5rem);display:grid;overflow:clip auto}.project-modal-panel__hero{gap:var(--space-3);max-width:60ch;display:grid}.project-modal-panel__title{font-family:var(--font-heading);font-size:clamp(2.2rem,4vw,4.2rem);font-weight:var(--font-light);letter-spacing:var(--tracking-tight);color:var(--color-text-primary);line-height:.92}.project-modal-panel__summary{color:var(--color-text-secondary);font-size:var(--text-lg);line-height:var(--leading-relaxed)}.project-modal-panel__actions{gap:var(--space-3);padding-top:var(--space-2);flex-wrap:wrap;display:flex}.project-modal-panel__primary-action,.project-modal-panel__secondary-action{min-height:44px;padding:0 var(--space-5);letter-spacing:var(--tracking-normal);font-size:var(--text-sm);transition:transform var(--duration-fast) var(--ease-out), box-shadow var(--duration-fast) var(--ease-out), background var(--duration-fast) var(--ease-out);border:0;border-radius:999px;justify-content:center;align-items:center;font-weight:500;display:inline-flex}.project-modal-panel__primary-action{background:var(--color-text-primary);color:var(--color-text-inverted);box-shadow:0 14px 28px color-mix(in srgb, var(--shadow-neumo-base) 18%, transparent), inset 0 1px 0 #ffffff2e}.project-modal-panel__secondary-action{background:linear-gradient(180deg, #ffffff1f, transparent), color-mix(in srgb, var(--color-background) 88%, transparent);color:var(--color-text-primary)}.project-modal-panel__primary-action:hover,.project-modal-panel__primary-action:focus-visible,.project-modal-panel__secondary-action:hover,.project-modal-panel__secondary-action:focus-visible{box-shadow:var(--shadow-neumo-sm);outline:none;transform:translateY(-1px)}.project-modal-panel__layout{gap:var(--surface-gap-md);grid-template-columns:minmax(0,1fr);align-items:start;display:grid}.project-modal-panel__media{min-width:0;margin:0}.project-modal-panel__media img{aspect-ratio:4/3;object-fit:contain;border-radius:12px;width:100%;height:auto;display:block}.project-modal-panel__meta{padding-block:.5rem}.project-modal-panel__meta-grid{gap:var(--surface-gap-sm);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.project-modal-panel__block{gap:var(--space-2);padding-top:var(--space-3);border-top:1px solid var(--color-border-subtle);display:grid}.project-modal-panel__block--wide{grid-column:1/-1}.project-modal-panel__copy,.project-modal-panel__story-copy{color:var(--color-text-primary);font-size:var(--text-base);line-height:var(--leading-relaxed)}.project-modal-panel__story{gap:var(--space-3);padding-block:.5rem;display:grid}.project-modal-panel__story-copy{gap:var(--space-4);max-width:72ch;display:grid}.project-modal-panel__link{width:fit-content;color:var(--color-accent);border-bottom:1px solid #0000}.project-modal-panel__link:hover,.project-modal-panel__link:focus-visible{border-bottom-color:currentColor;outline:none}@media (width<=1024px){.modal-dialog__frame{grid-template-rows:minmax(0,1fr);grid-template-columns:1fr}.modal-rail{display:none}.modal-project-tabs{gap:var(--space-2);padding:var(--space-3) var(--space-5);border-bottom:1px solid var(--color-border-subtle);scrollbar-width:thin;display:flex;overflow-x:auto}}@media (width<=720px){.modal-container{padding:0}.modal-dialog{border-radius:0;width:100%;height:100dvh;max-height:100dvh}.modal-dialog__frame{grid-template-rows:minmax(0,1fr);grid-template-columns:1fr;height:100%;min-height:0}.modal-main{grid-template-rows:auto auto minmax(0,1fr);min-height:0;overflow:hidden}.modal-main__topbar{padding-top:max(var(--space-4), env(safe-area-inset-top))}.modal-project-tabs{padding-right:max(var(--space-4), env(safe-area-inset-right));padding-left:max(var(--space-4), env(safe-area-inset-left))}.modal-body{min-height:0;padding:var(--space-5) var(--space-4);padding-bottom:calc(var(--space-8) + env(safe-area-inset-bottom));gap:var(--surface-gap-sm)}.project-modal-panel__layout,.project-modal-panel__meta-grid{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){.modal-backdrop,.modal-dialog,.modal-project-switch,.modal-close,.project-modal-panel__primary-action,.project-modal-panel__secondary-action{transition:none}}html.project-modal-open,body.project-modal-open,html.mobile-menu-open,body.mobile-menu-open{overscroll-behavior:contain;overflow:hidden}
