.hero-full[data-astro-cid-wdpwxqgy]{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 (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}}.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-top:clamp(var(--space-12), 7vw, var(--space-20));padding-bottom:clamp(var(--space-12), 7vw, var(--space-20))}.projects-header{gap:var(--surface-gap-sm);margin-bottom:var(--space-10);display:grid}.projects-header__line{background:var(--color-text-primary);width:96px;height:4px;box-shadow:0 2px 6px color-mix(in srgb, var(--color-text-primary) 18%, transparent)}.projects-header__copy{gap:var(--space-2);max-width:58ch;display:grid}.projects-header__kicker{color:var(--color-text-muted);font-size:var(--text-xs);letter-spacing:var(--tracking-widest);text-transform:uppercase}.projects-header__title{font-family:var(--font-heading);font-weight:var(--font-light);letter-spacing:var(--tracking-tight);font-size:clamp(2.25rem,4vw,4rem);line-height:.95}.projects-header__intro{max-width:48ch;color:var(--color-text-secondary);font-size:var(--text-lg);line-height:var(--leading-relaxed)}.projects-grid{gap:clamp(var(--surface-gap-md), 2.5vw, var(--surface-gap-lg));grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.project-card-shell{min-width:0}.project-card{text-align:left;isolation:isolate;appearance:none;cursor:pointer;width:100%;transition:transform var(--duration-fast) var(--ease-out);background:0 0;border:0;padding:0;display:block;position:relative;overflow:visible}.project-card--tier-1{grid-column:span 2}.project-card--tier-2,.project-card--tier-3{grid-column:span 1}.project-card:hover,.project-card:focus-visible{transform:translateY(-2px)}.project-card:focus-visible{outline-offset:6px}.card-article{z-index:1;border-radius:var(--surface-radius-lg);width:100%;height:100%;box-shadow:var(--shadow-neumo-md);transition:box-shadow var(--duration-fast) var(--ease-out);background:0 0;border:0;padding:0;position:relative;overflow:hidden}.project-card--tier-2 .card-article,.project-card--tier-3 .card-article{box-shadow:var(--shadow-neumo-sm)}.project-card:hover .card-article,.project-card:focus-visible .card-article{box-shadow:var(--shadow-neumo-hover), 0 10px 32px color-mix(in srgb, var(--color-brand-strong) 8%, transparent)}.project-card:active{transform:translateY(0)}.project-card:active .card-article{box-shadow:var(--shadow-neumo-pressed)}.project-card--tier-2 .card-article,.project-card--tier-3 .card-article{border-radius:var(--surface-radius-md)}.featured-badge{top:var(--space-4);left:var(--space-4);z-index:10;padding:var(--space-1) var(--space-3);font-family:var(--font-heading);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.1em;align-items:center;gap:var(--space-2);font-weight:600;display:flex;position:absolute}.badge-dot{border-radius:50%;width:6px;height:6px;display:inline-block}.featured-badge--tier-1{color:#000;background:#fffffff2}.featured-badge--tier-1 .badge-dot{background:#000;animation:2s infinite pulse}.featured-badge--tier-2{background:var(--color-text-primary);color:var(--color-background);border:1px solid #ffffff1a}.featured-badge--tier-2 .badge-dot{background:var(--color-background);opacity:.8;animation:none}.featured-badge--tier-3{backdrop-filter:blur(8px);color:#ffffffe6;background:#0006;border:1px solid #ffffff26}.featured-badge--tier-3 .badge-dot{display:none}@keyframes pulse{0%{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.5)}to{opacity:1;transform:scale(1)}}.featured-overlay{padding:var(--surface-padding-lg);opacity:1;transition:opacity var(--duration-normal) var(--ease-out);z-index:5;background:linear-gradient(#080c120a 0%,#080c1275 42%,#080c12e6 100%);flex-direction:column;justify-content:flex-end;display:flex;position:absolute;inset:0}.project-card--tier-2 .featured-overlay,.project-card--tier-3 .featured-overlay{padding:var(--surface-padding-md)}.project-card--tier-1 .card-image-only{aspect-ratio:21/9}.project-card--tier-2 .card-image-only,.project-card--tier-3 .card-image-only{aspect-ratio:16/9}.project-card--tier-1 .featured-content{max-width:700px}.project-card--tier-2 .featured-content,.project-card--tier-3 .featured-content{max-width:100%}.featured-title{font-family:var(--font-heading);margin-bottom:var(--space-2);color:#fff;letter-spacing:var(--tracking-normal);text-wrap:balance;line-height:1}.project-card--tier-1 .featured-title{font-size:clamp(1.75rem,4vw,3rem)}.project-card--tier-2 .featured-title,.project-card--tier-3 .featured-title{font-size:clamp(var(--text-xl), 2vw, var(--text-3xl))}.featured-summary{font-size:var(--text-lg);color:#ffffffe6;margin-bottom:var(--space-4);line-height:var(--leading-relaxed)}.project-card--tier-3 .featured-summary{font-size:var(--text-sm);opacity:.8}.project-card--tier-2 .featured-summary,.project-card--tier-3 .featured-summary,.project-card:not(.project-card--featured) .featured-summary{-webkit-line-clamp:2;font-size:var(--text-sm);-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.featured-index{margin-bottom:var(--space-2);color:#ffffffc2;font-size:var(--text-xs);font-weight:var(--font-semibold);letter-spacing:var(--tracking-widest);text-transform:uppercase}.featured-action{align-items:center;gap:var(--space-2);width:fit-content;margin-top:var(--space-4);color:#fff;font-size:var(--text-sm);font-weight:var(--font-semibold);display:inline-flex}.featured-action span{transition:transform var(--duration-fast) var(--ease-out)}.project-card:hover .featured-action span,.project-card:focus-visible .featured-action span{transform:translate(3px)}.featured-tags{gap:var(--space-2);flex-wrap:wrap;display:flex}.tag-label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.05em;padding:var(--space-1) var(--space-2);color:#fff;background:#ffffff1a;border:1px solid #fff3}.card-image-only{background:var(--color-background);border-radius:var(--surface-radius-md);aspect-ratio:16/9;width:100%;height:100%;display:block;position:relative;overflow:hidden}.project-card--featured .card-image-only{aspect-ratio:21/9}.project-card--tier-2 .card-image-only,.project-card--tier-3 .card-image-only{border-radius:var(--surface-radius-sm)}.card-image-only img{object-fit:cover;width:100%;height:100%;transition:transform .8s var(--ease-out), filter .5s ease;display:block}.project-card:hover .card-image-only img,.project-card:focus-visible .card-image-only img{transform:scale(1.04)}.corner-mark{font-family:var(--font-body);font-size:var(--text-base);color:var(--color-background);opacity:.8;pointer-events:none;text-shadow:0 1px 8px #0006;z-index:2;font-weight:300;line-height:1;position:absolute}.mark-tl{top:var(--space-4);left:var(--space-4)}.mark-tr{top:var(--space-4);right:var(--space-4)}.mark-bl{bottom:var(--space-4);left:var(--space-4)}.mark-br{bottom:var(--space-4);right:var(--space-4)}.oss-container{margin-top:var(--space-14);width:100%}.oss-container-header{padding:0 0 var(--space-4) 0;border-bottom:1px solid var(--color-border-subtle)}.oss-container-header .overline{font-size:var(--text-xs);letter-spacing:var(--tracking-wide);color:var(--color-text-primary)!important}.oss-list{flex-direction:column;display:flex}.oss-item{min-width:0;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);color:var(--color-text-primary);transition:box-shadow var(--duration-normal) var(--ease-out), transform var(--duration-normal) var(--ease-out), background var(--duration-normal) var(--ease-out);justify-content:space-between;align-items:center;text-decoration:none;display:flex}.oss-item:last-child{border-bottom:none}.oss-item:hover{background:color-mix(in srgb, var(--color-background) 60%, var(--color-background-subtle));box-shadow:var(--shadow-neumo-sm);transform:translateY(-1px)}.oss-item-main{align-items:baseline;gap:var(--surface-gap-lg);flex:1;grid-template-columns:200px auto 1fr;min-width:0;display:grid}.oss-type{font-family:var(--font-body);font-size:var(--text-xs);text-transform:uppercase;letter-spacing:var(--tracking-wide);color:var(--color-text-muted);white-space:nowrap}.oss-title{font-family:var(--font-heading);font-size:var(--text-xl);color:var(--color-text-primary);text-transform:uppercase;letter-spacing:var(--tracking-normal);white-space:nowrap;margin:0;font-weight:500}.oss-desc{font-family:var(--font-body);font-size:var(--text-sm);color:var(--color-text-muted);text-overflow:ellipsis;white-space:nowrap;margin:0;overflow:hidden}.oss-arrow{color:var(--color-text-primary);transition:transform var(--duration-fast);margin-left:var(--space-4)}.oss-item:hover .oss-arrow{transform:translate(2px,-2px)}@media (width<=1024px){.projects-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=900px){.oss-item-main{gap:var(--surface-gap-sm);grid-template-columns:150px auto 1fr}.oss-desc{display:none}}@media (width<=640px){.projects-grid{gap:var(--surface-gap-md);grid-template-columns:1fr}.project-card-shell,.project-card--tier-1,.project-card--tier-2,.project-card--tier-3{grid-column:1/-1}.project-card--featured .card-image-only{aspect-ratio:16/9!important}.project-card--tier-1 .featured-title{font-size:var(--text-3xl)}.project-card--tier-2 .featured-title,.project-card--tier-3 .featured-title{font-size:var(--text-xl)}.featured-content{padding:0}.featured-summary{font-size:var(--text-sm);margin-bottom:var(--space-2);-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.featured-action{margin-top:var(--space-2)}.card-article{border-radius:var(--surface-radius-md);box-shadow:var(--shadow-neumo-sm);padding:0}.card-image-only{border-radius:var(--surface-radius-sm)}.oss-item-main{gap:var(--space-1);grid-template-columns:1fr}.oss-type,.oss-title,.oss-desc{white-space:normal;overflow-wrap:anywhere;min-width:0}.oss-desc{text-overflow:clip;overflow:visible}}@media (prefers-reduced-motion:reduce){.project-card,.project-card__media img,.oss-item,.oss-arrow{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{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));opacity:0;pointer-events:none;overscroll-behavior:contain;transition:opacity var(--duration-normal) var(--ease-out);place-items:center;display:grid;position:fixed;inset:0}.modal-container[hidden]{display:none}.project-modal-panel__primary-action[hidden],.project-modal-panel__block[hidden]{display:none!important}.modal-container[data-state=open]{opacity:1;pointer-events:auto}.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;border:0;position:absolute;inset:0}.modal-dialog{border-radius:var(--surface-radius-lg);background:radial-gradient(circle at 16% 0%, #ffffff2e, transparent 30%), linear-gradient(145deg, #ffffff1f, transparent 44%), var(--surface-neumo);width:min(1120px,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(--duration-normal) var(--ease-out), opacity var(--duration-normal) var(--ease-out);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:before{content:"";border-radius:inherit;pointer-events:none;opacity:.7;background:linear-gradient(135deg,#ffffff2e,#0000 26% 72%,#ffffff1f);position:absolute;inset:0}.modal-dialog__frame{grid-template-columns:minmax(230px,290px) minmax(0,1fr);height:100%;min-height:0;display:grid}.modal-rail{align-content:start;gap:var(--surface-gap-lg);min-height:0;padding:clamp(var(--surface-padding-md), 3vw, var(--surface-padding-lg));background:linear-gradient(180deg, #ffffff14, transparent 22%), linear-gradient(180deg, color-mix(in srgb, var(--color-brand-strong) 6%, transparent), transparent 48%), color-mix(in srgb, var(--surface-neumo-sunken) 72%, transparent);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);background:linear-gradient(180deg, #ffffff1a, transparent), var(--surface-neumo-raised);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:var(--shadow-neumo-sm);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:linear-gradient(180deg, #ffffff24, transparent), color-mix(in srgb, var(--color-brand-strong) 7%, var(--color-background));box-shadow:var(--shadow-neumo-pressed);outline:none;transform:translate(6px)}.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:linear-gradient(180deg, color-mix(in srgb, var(--color-brand-strong) 4%, transparent), transparent 18%), transparent;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));gap:var(--surface-gap-md);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,1.18fr) minmax(300px,.82fr);align-items:start;display:grid}.project-modal-panel__media,.project-modal-panel__meta,.project-modal-panel__story{border-radius:var(--surface-radius-md);background:linear-gradient(145deg, #ffffff1f, transparent 48%), var(--surface-neumo-raised);box-shadow:var(--shadow-neumo-sm);border:0}.project-modal-panel__media{box-shadow:var(--shadow-neumo-md);margin:0;position:relative;overflow:hidden}.project-modal-panel__media:after{content:"";background:linear-gradient(180deg, transparent 60%, color-mix(in srgb, var(--color-background) 18%, transparent)), linear-gradient(90deg, color-mix(in srgb, var(--color-brand-strong) 6%, transparent), transparent 30%);pointer-events:none;position:absolute;inset:0}.project-modal-panel__media img{object-fit:cover;aspect-ratio:4/3;width:100%;height:100%;min-height:100%;display:block}.project-modal-panel__meta{gap:var(--surface-gap-sm);padding:var(--surface-padding-md);display:grid}.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:var(--surface-padding-md);display:grid}.project-modal-panel__story-copy{gap:var(--space-4);max-width:72ch;display:grid}.project-modal-panel__tags{gap:var(--space-2);flex-wrap:wrap;display:flex}.project-modal-panel__tag{min-height:30px;padding:0 var(--space-3);border:1px solid var(--color-border-subtle);background:color-mix(in srgb, var(--color-background) 90%, transparent);color:var(--color-text-secondary);font-size:var(--text-xs);letter-spacing:var(--tracking-widest);text-transform:uppercase;align-items:center;display:inline-flex}.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-container,.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}
