/* Campaign compositions extend the existing darkroom type and color system. */
[data-campaign-page]{--campaign-line:color-mix(in srgb,var(--bone) 23%,transparent)}
.campaign-hero{display:grid;grid-template-columns:1fr 1.2fr;align-items:start;gap:clamp(2rem,5vw,6rem);max-width:1600px;margin:auto;padding:clamp(8rem,11vw,11rem) clamp(1.3rem,5vw,6rem) 5rem}
.campaign-intro h1{font:400 clamp(3.2rem,6.5vw,6.6rem)/1.02 Fraunces,serif;letter-spacing:-.035em;margin:0 0 1.8rem;max-width:13ch;text-wrap:balance}
.campaign-intro h1 em{color:var(--amber);font-weight:400}
.campaign-lead{font:400 clamp(1.2rem,1.9vw,1.5rem)/1.5 Fraunces,serif;max-width:38ch;margin:0 0 2rem;color:var(--bone)}
.campaign-action{display:inline-flex;justify-content:space-between;align-items:center;gap:2rem;background:var(--amber);color:var(--ink);padding:1.1rem 1.3rem;text-decoration:none;font:500 1rem/1.4 'IBM Plex Mono',monospace;max-width:100%}
.campaign-action:hover{background:var(--bone)}
.campaign-signature{font:400 .98rem/1.5 Fraunces,serif;opacity:.8;margin:2.2rem 0 0}
.campaign-visual{min-width:0;position:relative;isolation:isolate}
.browser-art{background:var(--amber);color:var(--ink);transform:rotate(-3deg);box-shadow:18px 20px 0 color-mix(in srgb,var(--amber) 18%,var(--ink));margin:1rem 1rem 2rem 0}
.browser-top{display:flex;gap:7px;align-items:center;padding:18px;border-bottom:1px solid currentColor;font:400 .65rem/1.2 'IBM Plex Mono',monospace}.browser-top i{width:7px;height:7px;border:1px solid currentColor;border-radius:50%}.browser-top span{margin-left:auto}
.browser-message{font:400 clamp(4.4rem,9vw,9rem)/.9 Fraunces,serif;letter-spacing:-.06em;padding:4rem 1.8rem 3rem}.browser-message em{font-size:.44em;letter-spacing:-.04em;white-space:nowrap}
.browser-bottom{display:flex;justify-content:space-between;gap:1rem;align-items:center;border-top:1px solid currentColor;padding:1.3rem;font:400 .75rem/1.5 'IBM Plex Mono',monospace}.browser-bottom b{font-weight:400;white-space:nowrap}
.identity-art{position:relative;min-height:490px}.identity-back{position:absolute;inset:20px 0 80px 30px;background:var(--bone);color:var(--ink);transform:rotate(9deg);font:400 15rem/1 Fraunces,serif;padding:1rem;overflow:hidden}.identity-front{position:absolute;inset:85px 30px 40px 0;padding:2.2rem;background:var(--amber);color:var(--ink);transform:rotate(-7deg);box-shadow:0 20px 50px color-mix(in srgb,var(--ink) 35%,transparent);display:flex;flex-direction:column;align-items:flex-start}.identity-front img{background:var(--ink);padding:10px;box-sizing:content-box;width:44px;height:44px}.identity-front>span{font:400 3.2rem/1 Fraunces,serif;letter-spacing:-.04em;margin:1.3rem 0}.identity-front small{font:400 .75rem/1.5 'IBM Plex Mono',monospace}.identity-type{position:absolute;right:0;bottom:-14px;font:400 3.4rem/.94 Fraunces,serif;letter-spacing:-.04em;color:var(--bone);text-shadow:0 3px 18px var(--ink)}.identity-type em{color:var(--amber)}
.growth-art{min-height:480px;position:relative;background:linear-gradient(140deg,color-mix(in srgb,var(--amber) 17%,var(--ink)),var(--ink));border-bottom:1px solid var(--campaign-line);overflow:hidden}.growth-word{position:absolute;left:1rem;top:1rem;font:400 clamp(5rem,10vw,10rem)/1 Fraunces,serif;color:var(--amber);letter-spacing:-.07em}.growth-step{position:absolute;bottom:50px;padding:1.3rem 1rem;font:400 1.4rem/1 Fraunces,serif;color:var(--ink);width:35%;background:var(--bone);border:1px solid var(--ink)}.step-one{left:0;height:100px}.step-two{left:33%;height:155px;background:color-mix(in srgb,var(--amber) 60%,var(--bone))}.step-three{left:66%;height:215px;background:var(--amber)}.growth-caption{position:absolute;bottom:15px;left:0;font:400 .75rem/1.5 'IBM Plex Mono',monospace;color:var(--bone)}
.campaign-scope,.campaign-proof,.campaign-contact{padding:clamp(3.5rem,7vw,7rem) clamp(1.3rem,5vw,6rem);max-width:1600px;margin:auto;border-top:1px solid var(--campaign-line)}
.section-intro{display:grid;grid-template-columns:1fr 1fr;gap:4rem;align-items:start}.section-intro h2,.campaign-proof h2,.contact-intro h2{font:400 clamp(2.1rem,3.8vw,4rem)/1.1 Fraunces,serif;letter-spacing:-.04em;margin:0;max-width:17ch;text-wrap:balance}.section-intro p,.contact-intro>p{font:400 clamp(1.15rem,1.6vw,1.4rem)/1.6 Fraunces,serif;margin:0;max-width:43ch}
.campaign-list{list-style:none;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:2.5rem;padding:0;margin:3.5rem 0 2rem}.campaign-list li{border-top:1px solid var(--campaign-line);padding-top:1.2rem;display:flex;gap:1.2rem}.campaign-list .no{font:400 2.7rem/1 Fraunces,serif;color:var(--amber);opacity:.55}.campaign-list h3{font:400 1.5rem/1.2 Fraunces,serif;margin:0 0 .75rem}.campaign-list p{font:400 1.1rem/1.6 Fraunces,serif;margin:0;max-width:33ch}.campaign-rates{font:400 1.1rem/1.6 Fraunces,serif;margin:2.5rem 0 0}.campaign-rates a{white-space:nowrap}
[data-campaign-page] a:not(.campaign-action){color:var(--amber);text-underline-offset:5px}[data-campaign-page] a:focus-visible,[data-campaign-page] button:focus-visible{outline:3px solid var(--bone);outline-offset:5px}
.campaign-proof{padding-block:3rem}.campaign-proof h2{font-size:clamp(1.7rem,2.5vw,2.5rem);max-width:none}.proof-links{display:grid;grid-template-columns:1fr 1fr;gap:3rem;margin-top:2.2rem}.proof-links article{border-left:2px solid var(--amber);padding-left:1.4rem}.proof-links h3{font:400 clamp(1.4rem,2.3vw,2rem)/1.2 Fraunces,serif;margin:0 0 .75rem}.proof-links p{font:400 1rem/1.5 Fraunces,serif;margin:0;max-width:40ch}
.campaign-contact{display:grid;grid-template-columns:.8fr 1.2fr;gap:clamp(2rem,6vw,7rem);align-items:start;scroll-margin-top:5rem}.contact-intro h2{margin-bottom:1.5rem}.campaign-process{padding:0;margin:2.5rem 0;list-style:none;counter-reset:project}.campaign-process li{counter-increment:project;border-top:1px solid var(--campaign-line);padding:1.1rem 0 1.1rem 2rem;position:relative}.campaign-process li:before{content:counter(project);position:absolute;left:0;color:var(--amber);font:400 1rem/1.5 'IBM Plex Mono',monospace}.campaign-process strong,.campaign-process span{display:block;font:400 1.1rem/1.5 Fraunces,serif}.campaign-process strong{font-size:1.25rem;margin-bottom:.25rem}.contact-intro .contact-email{margin-bottom:1rem;font-size:1.1rem;overflow-wrap:anywhere}.contact-intro>p:last-child{font-size:1rem}
.campaign-form{scroll-margin-top:5rem;min-width:0;padding:clamp(1.2rem,3vw,2.5rem);background:color-mix(in srgb,var(--bone) 4%,var(--ink));border:1px solid var(--campaign-line)}.campaign-form .contact-form{margin:0;width:100%;max-width:none;display:block}.campaign-form .field-row{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem}.campaign-form .field{margin:0 0 1.25rem;min-width:0}.campaign-form label{display:block;font:400 .9rem/1.5 'IBM Plex Mono',monospace;margin:0 0 .45rem}.campaign-form input:not([type=checkbox]),.campaign-form select,.campaign-form textarea{display:block;box-sizing:border-box;width:100%;max-width:100%;min-height:48px;margin:0;border:1px solid color-mix(in srgb,var(--bone) 38%,transparent);border-radius:0;background:var(--ink);color:var(--bone);padding:.75rem;font:400 1.05rem/1.4 Fraunces,serif}.campaign-form textarea{min-height:130px;resize:vertical}.campaign-form option{background:var(--ink);color:var(--bone)}.campaign-form .consent{display:flex;align-items:flex-start;gap:.7rem;line-height:1.55;margin:1rem 0;font:400 .95rem/1.55 Fraunces,serif}.campaign-form .consent input{width:18px;height:18px;min-width:18px;flex:0 0 18px;margin:.2rem 0 0;accent-color:var(--amber)}.campaign-form .privacy-note{font:400 .9rem/1.55 Fraunces,serif;opacity:.9;margin:1rem 0}.campaign-form .submit{display:block;width:100%;min-height:52px;border:0;background:var(--amber);color:var(--ink);font:500 1rem/1.4 'IBM Plex Mono',monospace;padding:1rem;text-align:center;cursor:pointer}.campaign-form .submit:disabled{opacity:.6;cursor:wait}.campaign-form .form-status{font:400 1rem/1.5 Fraunces,serif;padding:1rem;border:1px solid var(--amber);margin:1rem 0 0}.campaign-form input:focus,.campaign-form select:focus,.campaign-form textarea:focus{outline:2px solid var(--amber);outline-offset:2px}
@media(max-width:900px){.campaign-hero{grid-template-columns:1fr 1fr;gap:2rem;padding-top:8rem}.campaign-intro h1{font-size:clamp(3rem,6.5vw,5rem)}.browser-message{padding:3rem 1rem;font-size:6rem}.browser-top span{font-size:.55rem}.browser-bottom{font-size:.6rem;padding:1rem;gap:.5rem}.identity-art{min-height:390px}.identity-front{padding:1.4rem}.identity-front>span{font-size:2.5rem}.identity-type{font-size:2.7rem}.identity-back{font-size:10rem}.growth-art{min-height:390px}.growth-word{font-size:6rem}.growth-step{font-size:1rem;padding:.8rem}.campaign-list{gap:1.5rem}.campaign-list li{display:block}.campaign-list .no{display:block;margin-bottom:1rem}.section-intro{gap:2rem}.campaign-contact{grid-template-columns:1fr 1.25fr;gap:2rem}.campaign-form .field-row{grid-template-columns:1fr;gap:0}}
@media(max-width:640px){.campaign-hero{grid-template-columns:1fr;padding:7.5rem 1.3rem 3.5rem;gap:2.5rem}.campaign-intro h1{font-size:clamp(3rem,12.7vw,4.4rem);max-width:none}.campaign-lead{font-size:1.2rem}.campaign-signature{margin-top:1.5rem}.browser-art{margin:.75rem .8rem 1rem 0}.browser-message{font-size:clamp(5.5rem,26vw,9rem);padding:2.6rem 1.3rem}.browser-bottom{font-size:.65rem}.identity-art{min-height:410px;margin-right:.8rem}.identity-front{inset:80px 30px 40px 0;padding:1.8rem}.identity-front>span{font-size:2.9rem}.identity-back{font-size:12rem}.growth-art{min-height:370px}.growth-word{font-size:7.3rem}.growth-step{font-size:1.1rem}.campaign-scope,.campaign-proof,.campaign-contact{padding-inline:1.3rem}.section-intro,.campaign-list,.proof-links,.campaign-contact{grid-template-columns:1fr;gap:1.8rem}.campaign-list{margin-top:2.2rem}.campaign-list li{display:flex;gap:1.1rem}.campaign-list .no{margin:0;flex:0 0 42px}.campaign-list p{max-width:none}.proof-links{gap:2rem}.campaign-contact{gap:2.5rem}.campaign-form{padding:1.2rem}.campaign-form .field-row{grid-template-columns:1fr}.campaign-rates a{white-space:normal}.contact-intro h2,.section-intro h2{max-width:18ch}.campaign-process{margin-block:2rem}}
@media(prefers-reduced-motion:reduce){[data-campaign-page]{scroll-behavior:auto}}

.campaign-form [hidden]{display:none!important}
.campaign-intro h1{word-spacing:.04em}
