.ph-page{background-color:var(--primary-color);min-height:100vh;color:var(--secondary-color)}.ph-hero{text-align:center;flex-direction:column;align-items:center;padding:72px 120px 56px;display:flex}.ph-hero-label{letter-spacing:.3em;color:var(--secondary-color);opacity:.5;margin:0 0 14px;font-size:.72rem;font-weight:600}.ph-hero-title{letter-spacing:.35em;color:var(--secondary-color);margin:0 0 20px;font-size:clamp(2rem,5vw,3.5rem);font-weight:300}.ph-hero-bio{font-family:var(--font-geist-mono), monospace;color:var(--secondary-color);opacity:.75;max-width:620px;margin:0;font-size:.92rem;line-height:1.85}.ph-masonry{grid-template-columns:repeat(3,1fr);gap:6px;padding:0 6px 6px;display:grid}.ph-masonry-col{flex-direction:column;gap:6px;display:flex}.ph-card{cursor:pointer;border-radius:2px;width:100%;position:relative;overflow:hidden}.ph-card--tall{height:560px}.ph-card--medium{height:400px}.ph-card--short{height:280px}.ph-card-img{object-fit:cover;width:100%;height:100%;transition:transform .6s;display:block}.ph-card:hover .ph-card-img{transform:scale(1.05)}.ph-card-overlay{opacity:0;background:linear-gradient(#0000 0%,#0003 60%,#000000d1 100%);align-items:flex-end;transition:opacity .4s;display:flex;position:absolute;inset:0}.ph-card:hover .ph-card-overlay{opacity:1}.ph-card-info{padding:28px 24px;transition:transform .4s;transform:translateY(14px)}.ph-card:hover .ph-card-info{transform:translateY(0)}.ph-card-category{font-family:var(--font-geist-mono), monospace;letter-spacing:.14em;text-transform:uppercase;color:#ffffff8c;margin:0 0 6px;font-size:.66rem}.ph-card-name{font-family:var(--font-montserrat), sans-serif;color:#fff;letter-spacing:.02em;margin:0;font-size:1.2rem;font-weight:600}.ph-modal-backdrop{z-index:2000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background-color:#000000bf;justify-content:center;align-items:center;padding:40px;animation:.25s phFadeIn;display:flex;position:fixed;inset:0}@keyframes phFadeIn{0%{opacity:0}to{opacity:1}}.ph-modal{background-color:var(--tertiary-color);z-index:2001;border-radius:6px;flex-direction:column;width:100%;max-width:820px;max-height:88vh;animation:.3s phSlideUp;display:flex;position:relative;overflow:hidden}@keyframes phSlideUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.ph-modal-close{color:var(--secondary-color);cursor:pointer;opacity:.6;z-index:10;background:0 0;border:none;font-size:1.1rem;line-height:1;transition:opacity .2s;position:absolute;top:18px;right:20px}.ph-modal-close:hover{opacity:1}.ph-modal-image{border-radius:6px 6px 0 0;flex-shrink:0;width:100%;height:400px;overflow:hidden}.ph-modal-image img{object-fit:cover;width:100%;height:100%}.ph-modal-content{flex-direction:column;flex:1;gap:20px;min-height:0;padding:36px 40px 44px;display:flex;overflow-y:auto}.ph-modal-header{flex-direction:column;gap:6px;display:flex}.ph-modal-category{font-family:var(--font-geist-mono), monospace;letter-spacing:.16em;text-transform:uppercase;color:var(--secondary-color);opacity:.45;margin:0;font-size:.68rem}.ph-modal-name{font-family:var(--font-montserrat), sans-serif;color:var(--secondary-color);letter-spacing:.02em;margin:0;font-size:2rem;font-weight:600}.ph-modal-description{font-family:var(--font-geist-mono), monospace;color:var(--secondary-color);opacity:.8;margin:0;font-size:.88rem;line-height:1.85}.ph-modal-deliverables{flex-direction:column;gap:12px;display:flex}.ph-modal-label{font-family:var(--font-geist-mono), monospace;letter-spacing:.18em;text-transform:uppercase;color:var(--secondary-color);opacity:.45;font-size:.68rem;font-weight:600}.ph-modal-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.ph-modal-list-item{font-family:var(--font-geist-mono), monospace;color:var(--secondary-color);opacity:.82;align-items:center;gap:10px;font-size:.85rem;display:flex}.ph-dash{color:var(--secondary-color);opacity:.35}@media (max-width:900px){.ph-masonry{grid-template-columns:repeat(2,1fr)}.ph-hero{padding:56px 32px 40px}.ph-modal{max-width:100%}.ph-modal-image{height:280px}}@media (max-width:600px){.ph-masonry{grid-template-columns:1fr}.ph-modal-backdrop{align-items:stretch;padding:0}.ph-modal{border-radius:0;height:100dvh;max-height:100dvh}.ph-modal-image{height:200px}.ph-modal-content{padding:24px 20px 32px}}
