.project-page{--pp-font-display: var(--font-futurbol);--pp-font-body: var(--font-sf-pro);--pp-black: var(--dt-color-base-black);--pp-fg-inverse: var(--dt-color-semantic-text-inverse);--pp-on-dark: var(--dt-color-semantic-text-onDark);--pp-on-dark-subtle: var(--dt-color-semantic-text-onDarkMuted);--pp-glass: var(--dt-color-semantic-background-glass);--pp-glass-strong: var(--dt-color-semantic-background-glassStrong);--pp-glass-pill-strong: var(--dt-color-semantic-background-glassPillStrong);--pp-border-glass: var(--dt-color-semantic-border-glass);--pp-border-glass-subtle: var(--dt-color-semantic-border-glassSubtle);--pp-grad-primary: linear-gradient( 90deg, var(--dt-gradient-highlight-secondary), var(--dt-gradient-highlight-primary) );--pp-ease-cubic: var(--dt-transition-easing-cubic);--pp-dur-normal: var(--dt-transition-duration-normal);--pp-dur-medium: var(--dt-transition-duration-medium);--pp-dur-slow: var(--dt-transition-duration-slow);--pp-dur-slower: var(--dt-transition-duration-slower);--pp-dur-slowest: var(--dt-transition-duration-slowest);--pp-max: var(--dt-layout-page-maxWidth);--pp-prose: 900px;--pp-measure: 62ch;--pp-sec-y: var(--dt-layout-section-y);--pp-sec-y-sm: clamp(32px, 5vw, 64px);--pp-block-y: clamp(20px, 2.6vw, 32px);--pp-media-y: clamp(32px, 4.4vw, 56px);--pp-gutter: var(--dt-layout-page-gutter);--pp-fs-display: var(--dt-typography-fontSize-fluid-3xl-6xl);--pp-fs-lead: var(--dt-typography-fontSize-fluid-lg-2xl);--pp-fs-h2: var(--dt-typography-fontSize-fluid-xl-2xl);--pp-fs-h3: var(--dt-typography-fontSize-fluid-lg-2xl);--pp-fs-body: var(--dt-typography-fontSize-fluid-base-lg);--pp-lh-body: 1.65;--pp-dock-h: 92px;background:var(--pp-black);color:var(--pp-fg-inverse);font-family:var(--pp-font-body);-webkit-font-smoothing:antialiased;min-height:100vh;overflow-x:clip}.project-page ::-moz-selection{background:var(--dt-color-highlight-primary-alpha50)}.project-page ::selection{background:var(--dt-color-highlight-primary-alpha50)}.project-page img{display:block;max-width:100%}.project-page a{color:inherit}.project-page .reveal{opacity:0;transform:translateY(22px)}.project-page .reveal.in{opacity:1;transform:none;transition:opacity .7s var(--pp-ease-cubic),transform .7s var(--pp-ease-cubic)}.project-page .reveal[data-d="1"].in{transition-delay:.08s}.project-page .reveal.pp-mask{opacity:1;transform:none;overflow:hidden}.project-page .pp-mask .pp-mask-inner{display:block;transform:translateY(110%);transition:transform .9s var(--pp-ease-cubic)}.project-page .pp-mask.in .pp-mask-inner{transform:none;transition-delay:.08s}@media(prefers-reduced-motion:reduce){.project-page .reveal{opacity:1!important;transform:none!important}.project-page .pp-mask .pp-mask-inner{transform:none!important}}.project-page .pp-progress{position:fixed;top:0;left:0;right:0;height:3px;z-index:var(--dt-layout-zIndex-expandedClose);pointer-events:none;background:var(--pp-grad-primary);transform-origin:0 50%}.project-page .pp-hero{position:relative;padding-top:var(--dt-layout-page-top)}.project-page .pp-hero-inner{display:flex;flex-direction:column;max-width:var(--pp-max);margin:0 auto;padding:0 var(--pp-gutter) 56px;position:relative}.project-page .pp-hero .glow{position:absolute;top:14%;right:6%;width:480px;height:480px;border-radius:var(--dt-border-radius-circle);background:radial-gradient(circle,var(--dt-color-highlight-primary-alpha50),transparent 65%);filter:blur(40px);z-index:0;pointer-events:none}.project-page .pp-hero-inner>*{position:relative;z-index:1}.project-page .pp-back{align-self:flex-start;margin-bottom:clamp(32px,5vh,56px);position:relative;z-index:2;display:inline-block;color:var(--pp-on-dark);text-decoration:none;cursor:pointer;font-family:var(--pp-font-body);font-size:var(--dt-typography-fontSize-xs);transition:color var(--dt-transition-duration-fast) var(--dt-transition-easing-default)}.project-page .pp-back:hover{color:var(--pp-fg-inverse)}.project-page .pp-hero-eyebrow{color:var(--pp-on-dark-subtle);margin-bottom:18px}.project-page .pp-hero h1{font-family:var(--pp-font-display);font-weight:var(--dt-typography-fontWeight-extrabold);color:var(--pp-fg-inverse);font-size:var(--pp-fs-display);line-height:.92;letter-spacing:var(--dt-typography-letterSpacing-tightest);margin:0}.project-page .pp-lede{font-size:var(--pp-fs-lead);line-height:1.45;font-weight:var(--dt-typography-fontWeight-medium);letter-spacing:-.01em;color:var(--pp-fg-inverse);max-width:42ch;margin:var(--pp-block-y) 0 0}.project-page .pp-metarow{display:flex;flex-wrap:wrap;gap:clamp(24px,3vw,40px);margin-top:var(--pp-sec-y-sm)}.project-page .pp-meta-k{color:var(--pp-on-dark-subtle);margin:0 0 6px}.project-page .pp-meta-v{font-size:var(--dt-typography-fontSize-base);font-weight:var(--dt-typography-fontWeight-semibold);color:var(--pp-fg-inverse);margin:0}.project-page .pp-heroimg{max-width:var(--pp-max);margin:var(--pp-block-y) auto 0;padding:0 var(--pp-gutter)}.project-page .pp-heroimg .pp-figure-btn{position:relative;display:block;width:100%;aspect-ratio:16 / 10;overflow:hidden;padding:0;border:1px solid var(--pp-border-glass);border-radius:var(--dt-border-radius-focusRing);background:var(--dt-color-semantic-background-mediaCard);box-shadow:var(--dt-shadow-mediaHero);cursor:zoom-in}.project-page .pp-heroimg img{position:relative;width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.project-page .pp-heroimg.is-contained img{-o-object-fit:contain;object-fit:contain}.project-page .pp-heroimg-backdrop{position:absolute;inset:-12%;background-size:cover;background-position:center;filter:blur(48px) brightness(.45) saturate(1.2)}.project-page .pp-heroimg img,.project-page .pp-figure img{opacity:0;transition:opacity .6s var(--pp-ease-cubic)}.project-page .pp-heroimg img.is-loaded,.project-page .pp-figure img.is-loaded{opacity:1}.project-page .pp-intro{max-width:var(--pp-max);margin:0 auto;padding:var(--pp-sec-y) var(--pp-gutter) 0}.project-page .pp-intro p{font-size:var(--dt-typography-fontSize-fluid-xl-2xl);line-height:1.35;letter-spacing:-.01em;font-weight:var(--dt-typography-fontWeight-medium);color:var(--pp-fg-inverse);margin:0;max-width:32ch;white-space:pre-line;text-wrap:pretty}.project-page .pp-intro strong{background:var(--pp-grad-primary);-webkit-background-clip:text;background-clip:text;color:transparent;font-weight:var(--dt-typography-fontWeight-bold)}.project-page .pp-split{max-width:var(--pp-max);margin:var(--pp-sec-y) auto 0;padding:0 var(--pp-gutter);display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);-moz-column-gap:clamp(32px,4vw,64px);column-gap:clamp(32px,4vw,64px);align-items:start}.project-page .pp-split-head,.project-page .pp-split-body{border-top:1px solid var(--pp-border-glass-subtle);padding-top:var(--pp-block-y)}.project-page .pp-split h2{font-family:var(--pp-font-display);font-weight:var(--dt-typography-fontWeight-extrabold);font-size:var(--pp-fs-h2);line-height:1.08;letter-spacing:-.01em;color:var(--pp-fg-inverse);margin:0;text-wrap:balance}.project-page .pp-chapter-index{display:block;font-family:var(--pp-font-display);font-weight:var(--dt-typography-fontWeight-extrabold);font-size:var(--dt-typography-fontSize-lg);font-variant-numeric:tabular-nums;line-height:1;color:var(--dt-gradient-highlight-primary);margin-bottom:var(--dt-spacing-3)}.project-page .pp-split-body p{font-size:var(--pp-fs-body);line-height:var(--pp-lh-body);color:var(--pp-on-dark);margin:0;max-width:var(--pp-measure);white-space:pre-line;text-wrap:pretty}.project-page .pp-split-body strong{color:var(--pp-fg-inverse)}.project-page .pp-chapter-link{display:inline-block;margin-top:var(--dt-spacing-5);font-size:var(--pp-fs-body);font-weight:var(--dt-typography-fontWeight-semibold);color:var(--pp-fg-inverse);text-decoration:underline;text-underline-offset:4px}.project-page .pp-chapter-link:hover{opacity:.75}.project-page .pp-figure{--ratio: 1.6;grid-column:1 / -1;position:relative;margin:var(--pp-media-y) 0 0;width:min(100%,calc(86svh * var(--ratio)));aspect-ratio:var(--ratio);border-radius:var(--dt-border-radius-focusRing);overflow:hidden;border:1px solid var(--pp-border-glass);background:var(--dt-color-semantic-background-mediaCard);box-shadow:var(--dt-shadow-mediaHero)}.project-page .pp-figure.is-tall{grid-column:2}.project-page .pp-figure .pp-figure-btn{position:absolute;inset:0;padding:0;border:0;background:none;cursor:zoom-in}.project-page .pp-figure img{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.project-page .pp-figure:hover img.is-loaded{filter:brightness(1.06)}.project-page .l3-chips{display:flex;flex-wrap:wrap;gap:10px;margin-top:var(--pp-block-y)}.project-page .pp-split-body>.l3-chips:first-child{margin-top:0}.project-page .l3-chip{color:var(--pp-fg-inverse);background:var(--pp-glass);border-color:var(--pp-border-glass-subtle);transition:background var(--pp-dur-normal),transform var(--pp-dur-normal) var(--pp-ease-cubic)}.project-page .l3-chip:hover{background:var(--pp-glass-strong);transform:translateY(-2px)}.project-page .l3-list{margin:0;padding:0;list-style:none;max-width:var(--pp-measure)}.project-page .l3-list li{position:relative;padding-left:24px;font-size:var(--pp-fs-body);line-height:var(--pp-lh-body);color:var(--pp-on-dark)}.project-page .l3-list li+li{margin-top:var(--dt-spacing-3)}.project-page .l3-list li:before{content:"";position:absolute;left:0;top:calc(.5lh - 4px);width:8px;height:8px;border-radius:var(--dt-border-radius-circle);background:var(--pp-grad-primary)}.project-page .pp-gallery{max-width:var(--pp-max);margin:0 auto;padding:var(--pp-sec-y) var(--pp-gutter) 0}.project-page .pp-gallery h2{font-family:var(--pp-font-display);font-weight:var(--dt-typography-fontWeight-extrabold);font-size:var(--pp-fs-h2);line-height:1.05;letter-spacing:-.01em;color:var(--pp-fg-inverse);margin:0 0 var(--pp-block-y)}.project-page .pp-gallery-wrap{position:relative}.project-page .pp-gallery-row{width:100vw;position:relative;left:50%;margin-left:-50vw;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity;scroll-padding-left:var(--dt-spacing-8);cursor:grab}.project-page .pp-gallery-row:active{cursor:grabbing}.project-page .pp-gallery-row::-webkit-scrollbar{display:none}.project-page .pp-gallery-track{display:flex;width:-moz-max-content;width:max-content;padding-left:var(--dt-spacing-8);padding-right:var(--dt-spacing-8)}.project-page .pp-shot{flex:0 0 auto;height:clamp(300px,46vh,460px);min-width:clamp(160px,42vw,240px);margin-right:16px;position:relative;overflow:hidden;border-radius:var(--dt-border-radius-cardXl);cursor:zoom-in;padding:0;border:1px solid var(--pp-border-glass);background:var(--pp-glass);scroll-snap-align:start}.project-page .pp-shot img{height:100%;width:auto;display:block;transition:transform var(--pp-dur-slower) var(--pp-ease-cubic)}.project-page .pp-shot:hover img{transform:scale(1.05)}.project-page .pp-shot .tag{position:absolute;left:14px;bottom:14px;z-index:2;padding:6px 14px;border-radius:var(--dt-border-radius-button);font-size:var(--dt-typography-fontSize-xs);font-weight:var(--dt-typography-fontWeight-bold);letter-spacing:.08em;text-transform:uppercase;background:var(--pp-glass-pill-strong);backdrop-filter:blur(8px);color:var(--dt-color-base-white)}.project-page .pp-drag-hint{position:absolute;right:var(--dt-spacing-8);bottom:18px;z-index:3;padding:8px 18px;border-radius:var(--dt-border-radius-button);background:var(--pp-glass-pill-strong);backdrop-filter:blur(var(--dt-effect-blur-md));color:var(--dt-color-base-white);font-size:var(--dt-typography-fontSize-xs);font-weight:var(--dt-typography-fontWeight-bold);letter-spacing:.1em;text-transform:uppercase;pointer-events:none;transition:opacity var(--pp-dur-slow) var(--pp-ease-cubic)}.project-page .pp-drag-hint.is-hidden{opacity:0}.project-page .pp-lightbox{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;padding:5vh 5vw;background:var(--dt-color-semantic-background-lightbox);backdrop-filter:blur(16px)}.project-page .pp-lightbox img{max-width:100%;max-height:90vh;border-radius:14px;box-shadow:var(--dt-shadow-mediaLarge)}.project-page .pp-lightbox .lb-btn{position:absolute;border-radius:var(--dt-border-radius-circle);cursor:pointer;color:var(--dt-color-base-white);border:1px solid var(--pp-border-glass);background:var(--pp-glass-strong);display:flex;align-items:center;justify-content:center;backdrop-filter:blur(8px)}.project-page .pp-lightbox .lb-x{top:24px;right:28px;width:46px;height:46px;font-size:var(--dt-typography-fontSize-lg)}.project-page .pp-lightbox .lb-nav{top:50%;transform:translateY(-50%);width:52px;height:52px}.project-page .pp-lightbox .lb-prev{left:24px}.project-page .pp-lightbox .lb-next{right:24px}@media(max-width:860px){.project-page .pp-hero-inner{padding-bottom:40px}.project-page .pp-metarow{gap:24px}.project-page .pp-heroimg .pp-figure-btn{aspect-ratio:4 / 3;border-radius:var(--dt-border-radius-cardLarge)}.project-page .pp-heroimg.is-contained .pp-figure-btn{aspect-ratio:4 / 5}.project-page .pp-split{grid-template-columns:minmax(0,1fr)}.project-page .pp-split-body{border-top:0;padding-top:var(--dt-spacing-4)}.project-page .pp-figure,.project-page .pp-figure.is-tall{grid-column:1;width:min(100%,calc(80svh * var(--ratio)));border-radius:var(--dt-border-radius-cardLarge)}.project-page .pp-shot{height:clamp(240px,38vh,360px)}}@media(prefers-reduced-motion:reduce){.project-page .pp-shot img{transition:none}.project-page .pp-shot:hover img{transform:none}}.project-page .pp-fab{--fab-z: 120;--fab-gutter: var(--pp-gutter);--fab-font: var(--pp-font-body);--fab-tray-width: max-content;--fab-tray-bg: transparent;--fab-tray-border: transparent;--fab-tray-blur: 0px;--fab-shadow: none;--fab-action-height: 52px;--fab-primary-glow: 0 8px 28px rgba(0, 0, 0, .45)}.project-page .pp-fab .fab-action{padding:0 var(--dt-spacing-8);font-size:var(--dt-typography-fontSize-base)}.project-page{padding-bottom:calc(var(--pp-dock-h) + env(safe-area-inset-bottom,0px));scroll-padding-bottom:calc(var(--pp-dock-h) + env(safe-area-inset-bottom,0px))}@media(max-width:480px){.project-page .pp-fab{--fab-gutter: var(--dt-spacing-4)}}.project-page .pp-services-cta{max-width:var(--pp-prose);margin:0 auto;padding:var(--pp-sec-y) var(--pp-gutter)}.project-page .pp-cta-card{position:relative;isolation:isolate;border:1px solid var(--dt-color-semantic-text-match);border-radius:var(--dt-border-radius-cardLarge, 18px);padding:var(--dt-spacing-10) var(--dt-spacing-8);text-align:center;background:var(--dt-color-base-black)}.project-page .pp-cta-halo{position:absolute;inset:-2px;z-index:-1;border-radius:inherit;background:linear-gradient(120deg,var(--dt-color-semantic-text-match),#6d2d8e);filter:blur(22px);opacity:.45;animation:pp-cta-breathe 5.5s ease-in-out infinite}@keyframes pp-cta-breathe{0%,to{opacity:.3;transform:scale(.99)}50%{opacity:.6;transform:scale(1.02)}}.project-page .pp-cta-title{font-family:var(--pp-font-display);font-weight:var(--dt-typography-fontWeight-extrabold);font-size:var(--pp-fs-h2);line-height:1.05;letter-spacing:-.01em;color:var(--pp-fg-inverse);margin:0 0 var(--dt-spacing-8)}.project-page .pp-cta-prices{list-style:none;display:flex;flex-wrap:wrap;justify-content:center;gap:var(--dt-spacing-5) var(--dt-spacing-10);margin:0 0 var(--dt-spacing-8);padding:0}.project-page .pp-cta-prices li{display:flex;flex-direction:column;gap:2px}.project-page .pp-cta-tier{font-family:var(--dt-typography-fontFamily-primary);color:#ffffff80}.project-page .pp-cta-price{font-family:var(--pp-font-display);font-weight:var(--dt-typography-fontWeight-extrabold);font-size:var(--dt-typography-fontSize-lg);font-variant-numeric:tabular-nums;color:var(--pp-fg-inverse);white-space:nowrap}.project-page .pp-cta-link{display:inline-block;font-family:var(--dt-typography-fontFamily-primary);font-weight:var(--dt-typography-fontWeight-semibold);font-size:var(--pp-fs-body);color:var(--pp-fg-inverse);text-decoration:underline;text-underline-offset:5px;padding:var(--dt-spacing-2) 0}.project-page .pp-cta-link:hover{opacity:.75}@media(prefers-reduced-motion:reduce){.project-page .pp-cta-halo{animation:none;opacity:.4}}@media(prefers-reduced-transparency:reduce){.project-page .pp-shot .tag,.project-page .pp-drag-hint,.project-page .pp-lightbox .lb-btn{background:var(--dt-color-base-ink);backdrop-filter:none}.project-page .pp-lightbox{background:#08060af5;backdrop-filter:none}}@media(prefers-contrast:more){.project-page .pp-shot .tag,.project-page .pp-drag-hint,.project-page .pp-lightbox .lb-btn{background:var(--dt-color-base-ink);backdrop-filter:none;border:1px solid var(--dt-color-base-white)}.project-page .pp-lightbox{background:#08060af5;backdrop-filter:none}}
