/* Hallmark · shape: Portfolio Index · genre: editorial · theme: brand · redesign: full · job: hire
 * paper: #f8f5ee · accent: #886421 · display: Georgia · body: Arial · hero: Ledge · nav: quiet edge · footer: colophon
 * signature: three real Philadelphia business demo captures · axes: light/roman-serif/warm · posture: Committed navy field · v2.0.0 */
/* Hallmark · pre-emit critique: P4 H5 E4 S4 R5 V4 · weakest: S, generic agency framing; led with the actual Philadelphia demo collection */
/* Hallmark · hero-review: ship · 0 findings · finish-review: subagent fix · 2 findings · 2 resolved · gap: none */
@import './tokens.css';
@import './base.css' layer(base);
html{scroll-behavior:smooth}body{font-synthesis:none}a{text-decoration:none}button{cursor:pointer}button,input,select,textarea{border-radius:var(--radius-input)}button{color:inherit}a,button{touch-action:manipulation}a:active,button:active{transform:translateY(1px)}button:disabled,input:disabled,select:disabled,textarea:disabled{opacity:.55;cursor:not-allowed}button[aria-busy=true]{cursor:progress}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--color-focus);outline-offset:4px}p{max-width:65ch;line-height:1.65}p,li{color:var(--color-muted)}h1,h2,h3{font-family:var(--font-display);font-weight:var(--display-weight);overflow-wrap:break-word;min-width:0}h1{font-size:var(--text-display);line-height:.98;max-width:12ch}h2{font-size:var(--text-section);line-height:1.06;max-width:20ch}h3{font-size:var(--text-title)}.header{background:var(--color-paper);position:sticky;top:0;z-index:var(--z-sticky-nav)}.header-inner{height:var(--header-height);display:flex;align-items:center;justify-content:space-between;gap:var(--gap-columns)}.brand{display:flex;align-items:center;gap:var(--space-sm);font-family:var(--font-display);font-size:32px;line-height:1;letter-spacing:-.03em}.brand-city{display:block;font-family:var(--font-body);font-size:var(--text-xs);letter-spacing:normal;margin-top:var(--space-xs)}.brand-mark{width:44px;height:56px;overflow:hidden;position:relative}.brand-mark img{max-width:none;width:85px;height:auto;position:absolute;left:-20px;top:-16px;mix-blend-mode:multiply}.header nav{display:flex;gap:var(--space-lg);font-size:var(--text-sm);align-items:center}.header nav a,.nav-contact{padding-block:var(--space-sm);white-space:nowrap}.nav-contact{font-size:var(--text-sm);text-decoration:underline;text-underline-offset:6px}.menu{display:none}.button{display:inline-flex;align-items:center;justify-content:center;min-height:52px;padding:var(--space-sm) var(--space-lg);background:var(--color-ink);color:var(--color-paper);border:1px solid var(--color-ink);font:400 var(--text-sm)/1.5 var(--font-body);white-space:nowrap;text-align:center;transition:opacity var(--dur-micro) var(--ease-out)}.button:hover{opacity:.8}.button.outline{background:var(--color-clear);color:var(--color-ink);border-color:var(--color-ink)}.text-link,.inline-button{font-family:var(--font-body);font-size:var(--text-sm);background:var(--color-clear);color:inherit;border:0;padding:var(--space-xs) 0;text-decoration:underline;text-underline-offset:5px;white-space:nowrap}.text-link:hover,.inline-button:hover,a:hover{ text-decoration-color:var(--color-accent)}.hero{padding-block:var(--space-xl) var(--space-2xl)}.hero-top{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);align-items:end;gap:var(--gap-columns);margin-bottom:var(--space-xl)}.hero-action{padding-bottom:var(--space-xs);max-width:340px}.hero-action .intro{font-size:var(--text-lead);color:var(--color-ink);line-height:1.5;margin-bottom:var(--space-lg)}.hero-action>.text-link{display:block;width:max-content;margin-top:var(--space-sm)}.hero-work{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-md)}.hero-capture{display:block;height:var(--hero-capture-height);overflow:hidden;background:var(--color-paper-2)}.hero-capture img{width:100%;height:100%;object-fit:cover;object-position:top left}.hero-caption{font-size:var(--text-sm);margin-top:var(--space-md)}.section{padding-block:var(--section-gap-s)}.section-head{display:flex;align-items:end;justify-content:space-between;gap:var(--gap-columns);margin-bottom:var(--space-2xl)}.section-head>p{max-width:350px}.collection{background:var(--color-paper-2)}.gallery-controls{display:grid;grid-template-columns:minmax(0,1fr) 220px;gap:var(--gap-columns);align-items:start}.filter-list{display:flex;flex-wrap:wrap;gap:var(--space-xs)}.chip{min-height:44px;padding:var(--space-xs) var(--space-sm);border:1px solid var(--color-muted);background:var(--color-clear);font-size:var(--text-sm);white-space:nowrap}.chip.active{background:var(--color-ink);color:var(--color-paper);border-color:var(--color-ink)}.chip:hover{background:var(--color-paper-3)}.chip.active:hover{background:var(--color-ink-2)}.search input{width:100%;min-height:44px;background:var(--color-clear);border:0;border-bottom:1px solid var(--color-muted);color:var(--color-ink);font-size:var(--text-md);padding:var(--space-xs) 0}.search input::placeholder{color:var(--color-muted);opacity:1}.gallery-meta{display:flex;justify-content:space-between;gap:var(--space-md);font-size:var(--text-sm);color:var(--color-muted);margin-block:var(--space-lg)}.gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-2xl) var(--gap-columns)}.site-card{min-width:0}.site-thumbnail-link{display:block;aspect-ratio:1.6;background:var(--color-paper-3);overflow:hidden}.site-thumbnail-link img{width:100%;height:100%;object-fit:cover;object-position:top center}.site-caption{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-md);margin-top:var(--space-lg)}.site-caption>span{font-size:var(--text-sm);color:var(--color-muted)}.site-desc{font-size:var(--text-md);margin-top:var(--space-sm)}.site-actions{display:flex;justify-content:space-between;gap:var(--space-md);border-bottom:1px solid var(--color-rule);padding-block:var(--space-lg);font-size:var(--text-sm)}.site-actions a{text-decoration:underline;text-underline-offset:5px;white-space:nowrap}.gallery-more{display:flex;justify-content:space-between;gap:var(--space-lg);align-items:center;margin-top:var(--space-xl)}.education-callout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:var(--space-lg) var(--gap-columns);padding-block:var(--space-2xl) 0;margin-top:var(--space-2xl);border-top:1px solid var(--color-rule)}.education-callout h3{font-size:var(--text-section);line-height:1.08;grid-row:span 2}.education-callout>.text-link{width:max-content}.system{background:var(--color-field);color:var(--color-field-ink)}.system p{color:var(--color-field-muted)}.system-rows details{border-top:1px solid var(--color-field-muted)}.system-rows summary{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:var(--gap-columns);padding-block:var(--space-lg);align-items:baseline;cursor:pointer;list-style:none}.system-rows summary>span:first-child{font-family:var(--font-display);font-size:var(--text-title)}.system-rows summary>span:last-child{font-size:var(--text-sm);color:var(--color-field-muted)}details summary::-webkit-details-marker{display:none}.system-rows p{padding-bottom:var(--space-lg);margin-left:40%;font-size:var(--text-md);max-width:60ch}.scope-note{display:flex;align-items:start;justify-content:space-between;gap:var(--gap-columns);border-top:1px solid var(--color-field-muted);padding-top:var(--space-lg);margin-top:var(--space-lg)}.scope-note p{font-size:var(--text-sm);max-width:65ch}.system :focus-visible{outline-color:var(--color-paper)}.local{padding-block:var(--section-gap-l)}.local-copy{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:var(--gap-columns);align-items:end;margin-bottom:var(--space-xl)}.local-images{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:var(--gap-columns)}figure{margin:0}.local-images img{width:100%;height:450px;object-fit:cover}.local-images figcaption{font-size:var(--text-sm);margin-top:var(--space-md);color:var(--color-muted)}.proof-placeholder{margin-top:var(--space-xl);padding-top:var(--space-lg);border-top:1px solid var(--color-rule)}.proof-placeholder summary{cursor:pointer;font-size:var(--text-md)}.proof-placeholder p{margin-top:var(--space-md)}.process{background:var(--color-paper-2)}.process-list{list-style:decimal;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--gap-columns);padding:0;margin:var(--space-2xl) 0 0;counter-reset:steps}.process-list li{display:block;border-top:1px solid var(--color-muted);padding-top:var(--space-lg);counter-increment:steps}.process-list li::before{content:counter(steps);display:block;font-family:var(--font-display);font-size:var(--text-section);line-height:1;margin-bottom:var(--space-lg);color:var(--color-ink)}.process-list h3{margin-bottom:var(--space-md)}.faq-grid{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.4fr);gap:var(--gap-columns)}.faq-list details{border-top:1px solid var(--color-rule);padding-block:var(--space-lg)}.faq-list summary{display:flex;justify-content:space-between;gap:var(--space-lg);font-size:var(--text-md);cursor:pointer;list-style:none}.faq-list summary>span{color:var(--color-accent);font-size:24px;line-height:1}.faq-list p{margin-top:var(--space-lg);max-width:65ch}.start{background:var(--color-field);color:var(--color-field-ink)}.start-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:var(--gap-columns)}.start-copy{padding-right:var(--space-xl)}.start-copy>p{color:var(--color-field-muted);margin-top:var(--space-lg);max-width:40ch}.start-notes{list-style:none;padding:0;margin-block:var(--space-xl);display:grid;gap:var(--space-sm)}.start-notes li{color:var(--color-field-muted);font-size:var(--text-sm)}.master-logo{width:112px;height:auto;margin-top:var(--space-2xl)}.lead-form{background:var(--color-paper);color:var(--color-ink);padding:var(--space-xl)}.lead-form h3{font-size:36px}.form-description{font-size:var(--text-sm);margin-block:var(--space-md) var(--space-xl)}.lead-form label:not(.consent):not(.honeypot){display:block;font-size:var(--text-sm);margin-bottom:var(--space-lg)}.lead-form label small{float:right;font-size:var(--text-xs);color:var(--color-muted)}.lead-form input:not([type=checkbox]):not([type=hidden]),.lead-form select,.lead-form textarea{display:block;width:100%;border:1px solid var(--color-muted);background:var(--color-paper);color:var(--color-ink);padding:var(--space-sm);margin-top:var(--space-xs);min-height:48px;font-size:var(--text-md);outline-offset:-3px}.lead-form textarea{resize:vertical;min-height:8rem}.lead-form input::placeholder,.lead-form textarea::placeholder{color:var(--color-muted);opacity:1}.lead-form input:hover,.lead-form select:hover,.lead-form textarea:hover{background:var(--color-paper-2)}.form-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--gap-columns)}.consent{display:flex;align-items:start;gap:var(--space-sm);margin-block:var(--space-lg);font-size:var(--text-sm);color:var(--color-muted)}.consent input{width:18px;height:18px;margin:var(--space-2xs) 0 0;accent-color:var(--color-ink);flex-shrink:0}.consent .inline-button{padding:0;white-space:normal;font-size:inherit}.lead-form>.button{width:100%}.form-small{font-size:var(--text-xs);margin-top:var(--space-md);text-align:center}.honeypot{display:none}.selected-template{display:flex;justify-content:space-between;align-items:center;gap:var(--space-md);border-block:1px solid var(--color-muted);padding-block:var(--space-sm);font-size:var(--text-sm)}.selected-template button{background:var(--color-clear);border:0;font-size:24px;min-width:44px;min-height:44px}#form-status{font-variant-numeric:tabular-nums;min-height:1lh;margin-top:var(--space-md);font-size:var(--text-sm)}#form-status:not(:empty){padding:var(--space-md);background:var(--color-paper-2);color:var(--color-success)}#form-status.error{color:var(--color-error)}footer{padding-block:var(--space-2xl) var(--space-xl)}.footer-top{display:flex;justify-content:space-between;align-items:center;gap:var(--gap-columns);padding-bottom:var(--space-2xl)}.footer-top>p{font-family:var(--font-display);font-size:24px;color:var(--color-ink)}.footer-bottom{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--space-md);border-top:1px solid var(--color-rule);padding-top:var(--space-lg);font-size:var(--text-sm);align-items:center;color:var(--color-muted)}.image-note{font-size:var(--text-xs);margin-top:var(--space-lg)}.mobile-cta{display:none}.skip{position:absolute;top:-100px;left:var(--space-md);padding:var(--space-sm);background:var(--color-paper);color:var(--color-ink);z-index:500}.skip:focus-visible{top:var(--space-md)}dialog{inset:0;margin:auto;width:min(650px,calc(100% - 40px));height:fit-content;max-height:85dvh;overflow:auto;border:0;background:var(--color-paper);color:var(--color-ink);padding:var(--space-xl);z-index:var(--z-modal)}dialog::backdrop{background:var(--color-backdrop)}dialog h2{font-size:var(--text-section);margin-bottom:var(--space-xl)}dialog p{margin-block:var(--space-lg)}dialog .button{margin-top:var(--space-lg)}.dialog-close{position:absolute;right:var(--space-sm);top:var(--space-xs);min-width:44px;min-height:44px;border:0;background:var(--color-clear);font-size:28px}.empty{padding-block:var(--space-xl)}
@media(max-width:70rem){.hero-top{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr)}.header nav{gap:var(--space-md)}.header nav a{font-size:var(--text-xs)}.hero-work{gap:var(--space-sm)}.hero-capture{height:var(--hero-capture-height)}.gallery-controls{grid-template-columns:minmax(0,1fr)}.search input{max-width:350px}.hero h1{font-size:clamp(4.5rem,8.7vw,7rem)}}
@media(max-width:60rem){.nav-contact{display:none}.hero{padding-top:var(--space-xl)}.hero-top{align-items:start}.hero-action .intro{font-size:var(--text-md)}.hero-action .button{font-size:var(--text-xs);padding-inline:var(--space-md)}.hero-work{grid-template-columns:repeat(2,minmax(0,1fr))}.hero-capture:last-child{display:none}.section-head{display:block}.section-head>p{margin-top:var(--space-lg);max-width:60ch}.local-copy{grid-template-columns:minmax(0,1fr);gap:var(--space-lg)}.local-images img{height:360px}.start-grid{grid-template-columns:minmax(0,1fr)}.start-copy{padding-right:0}.master-logo{display:none}.start-copy>p{max-width:65ch}.lead-form{margin-top:var(--space-xl)}.faq-grid{grid-template-columns:minmax(0,1fr)}.faq-list{margin-top:var(--space-xl)}.footer-top{flex-wrap:wrap}.system-rows p{margin-left:0}.scope-note{display:block}.scope-note .text-link{display:inline-block;margin-top:var(--space-md)}}
@media(max-width:40rem){.header-inner{gap:var(--space-md)}.brand{font-size:28px}.brand-city{font-size:var(--text-xs)}.header nav{display:none;position:absolute;top:var(--header-height);left:0;right:0;padding:var(--space-lg) var(--gutter);background:var(--color-paper);border-bottom:1px solid var(--color-rule)}.header nav.open{display:grid;gap:var(--space-md)}.header nav a{font-size:var(--text-md)}.menu{display:grid;gap:var(--space-xs);padding:var(--space-sm);border:0;background:var(--color-clear);min-width:44px;min-height:44px;align-content:center}.menu span{display:block;width:24px;height:1px;background:var(--color-ink)}.hero-top{grid-template-columns:minmax(0,1fr);gap:var(--space-lg);margin-bottom:var(--space-xl)}.hero h1{font-size:clamp(3.35rem,13.7vw,5rem);max-width:12ch;line-height:1.01}.hero-action{max-width:none}.hero-action .intro{font-size:var(--text-lead);max-width:30ch}.hero-action .button{font-size:var(--text-sm)}.hero-action>.text-link{display:inline-block;margin-top:var(--space-md)}.hero-work{grid-template-columns:minmax(0,1fr)}.hero-capture{height:auto;aspect-ratio:1.6}.hero-capture:not(:first-child){display:none}.hero-caption{font-size:var(--text-xs)}.gallery{grid-template-columns:minmax(0,1fr);row-gap:var(--space-xl)}.site-caption{display:block}.site-caption>span{display:block;margin-top:var(--space-xs)}.gallery-meta{display:block}.gallery-meta>span:last-child{display:block;margin-top:var(--space-xs)}.gallery-more{display:grid;gap:var(--space-lg)}.gallery-more>.button{width:max-content}.education-callout{grid-template-columns:minmax(0,1fr);margin-top:var(--space-xl);padding-top:var(--space-xl)}.education-callout h3{grid-row:auto;font-size:36px}.system-rows summary{grid-template-columns:minmax(0,1fr);gap:var(--space-xs);padding-block:var(--space-lg)}.system-rows summary>span:first-child{font-size:26px}.local-images{grid-template-columns:minmax(0,1fr);row-gap:var(--space-xl)}.local-images img{height:330px}.process-list{grid-template-columns:minmax(0,1fr);gap:var(--space-xl);margin-top:var(--space-xl)}.process-list li::before{font-size:48px;margin-bottom:var(--space-md)}.start-notes{margin-block:var(--space-lg)}.lead-form{padding:var(--space-lg) var(--space-md);margin-inline:calc(-1 * var(--space-xs))}.lead-form h3{font-size:32px}.form-row{grid-template-columns:minmax(0,1fr);gap:0}.form-small{font-size:var(--text-xs)}.footer-top{display:grid;justify-content:start;gap:var(--space-xl);padding-bottom:var(--space-xl)}.footer-top>p{font-size:22px}.footer-bottom{display:grid;justify-content:start;font-size:var(--text-xs)}.footer-bottom>.inline-button{width:max-content}.image-note{margin-bottom:var(--space-2xl)}.mobile-cta{display:block;position:fixed;left:var(--space-md);right:var(--space-md);bottom:var(--space-sm);z-index:200;min-height:48px;text-align:center;padding:var(--space-sm) var(--space-md);border-color:var(--color-paper);font-size:var(--text-sm);white-space:nowrap}.mobile-cta.hide{transform:translateY(100px)}dialog{width:calc(100% - 24px);padding:var(--space-xl) var(--space-lg)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}}

.education-callout>.text-link{align-self:start;min-height:44px}.inline-button{min-height:44px}.consent .inline-button{min-height:44px;position:relative;display:inline-flex;align-items:center}.consent .inline-button::after{content:'';position:absolute;inset:-12px 0}.hero-top.reveal{animation:settle var(--dur-long) var(--ease-out) both}@keyframes settle{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media(prefers-reduced-motion:reduce){.hero-top.reveal{animation:none}}

.gallery{margin-top:var(--space-xl)}.system-rows summary>span:last-child{display:flex;align-items:center;justify-content:space-between;gap:var(--space-lg)}.system-rows summary>span:last-child::after{content:'+';font-size:24px;line-height:1;color:var(--color-field-ink)}.system-rows details[open] summary>span:last-child::after{content:'−'}
