/* Wesvices / warm paper + charcoal. Artwork is never filtered. */
:root,[data-theme=light]{
 --page:#f8f7f3;--surface:#eeece5;--text:#1b1c19;--body-text:#53564d;--subtle:#64675e;
 --border:#d5d3cb;--control-border:#85877d;--action:#23251f;--action-text:#f8f7f3;
 --accent-text:#bb2e26;--focus:#b92d25;--error:#b12823;--success:#25693c;
 --inverse:#20211e;--inverse-text:#f1efe7;--inverse-muted:#babcb1;--inverse-line:#51534b;
 --footer-bg:#141612;--footer-text:#eeece5;--footer-muted:#a7aa9f;
 --cta-bg:#ef4036;--cta-text:#211613;--frame:#242520;--header-shadow:#1b1c190c;
 --torch-metal:#56594e;--torch-highlight:#a8aa9f;--torch-flame:#dd8b34;
 --ink:var(--text);--paper:var(--page);--muted:var(--subtle);--line:var(--border);--line-dark:var(--inverse-line);
}
[data-theme=dark]{
 --page:#1b1c19;--surface:#292b25;--text:#f0eee6;--body-text:#c4c6bb;--subtle:#b0b3a6;
 --border:#44473d;--control-border:#818777;--action:#eeece3;--action-text:#20221c;
 --accent-text:#ff897e;--focus:#ff897e;--error:#ff897e;--success:#91cba2;
 --inverse:#121410;--inverse-text:#eaece2;--inverse-muted:#b0b6a6;--inverse-line:#3c4234;
 --footer-bg:#10120e;--footer-text:#e3e6db;--footer-muted:#a8b09b;
 --cta-bg:#e94b40;--cta-text:#211613;--frame:#30352a;--header-shadow:#0003;
 --torch-metal:#a1a791;--torch-highlight:#d4dac7;--torch-flame:#edb063;
}
body{background:var(--page);color:var(--text)}
:focus-visible{outline-color:var(--focus)}
::selection{background:var(--action);color:var(--action-text)}
.header.scrolled{box-shadow:0 8px 24px var(--header-shadow)}
/* A compact, transparent brand lockup. Keep the supplied artwork intact. */
.identity{gap:13px;min-height:44px;padding:4px 0;border-radius:2px}
.identity-mark{position:relative;display:block;width:60px;aspect-ratio:608/277;flex:none}
.identity .identity-mark img{width:100%;height:100%;padding:0;background:transparent;object-fit:contain}
.identity-label{display:block;font-size:18px;line-height:1;letter-spacing:-.045em;font-weight:700}
.identity-label span{font-size:8px;line-height:1.25;letter-spacing:.16em;margin-top:6px;font-weight:500}
/* The original alpha defines the reversed W, not a redrawn approximation.
   Its diagonal separation leaves the original red S completely untouched. */
[data-theme=dark] .identity-mark{background:#f8f7f3}
@supports (mask-image:url("logo.png")) or (-webkit-mask-image:url("logo.png")){
 [data-theme=dark] .identity-mark{background:transparent}
 .identity-mark::after{content:"";position:absolute;inset:0;background:#f0eee6;opacity:0;pointer-events:none;-webkit-mask:url("logo.png") center/contain no-repeat;mask:url("logo.png") center/contain no-repeat;clip-path:polygon(0 0,63% 0,54% 100%,0 100%)}
 [data-theme=dark] .identity-mark::after{opacity:1}
}
.intro-copy,.case-copy p,.service-detail ul,.plain-content p,.plain-content li{color:var(--body-text)}
.timeline-row .smallprint{color:var(--subtle)}
.case-note,.form-status{background:var(--surface);color:var(--body-text)}
.skip{background:var(--action);color:var(--action-text)}
.btn{background:var(--action);color:var(--action-text);border-color:var(--action)}
.btn-outline{background:transparent;color:var(--text)}
.btn:hover,.btn-red{background:var(--accent-text);border-color:var(--accent-text);color:var(--page)}
.btn-outline:hover,.nav .nav-cta:hover{background:var(--action);color:var(--action-text);border-color:var(--action)}
.btn:disabled{background:var(--surface);color:var(--subtle);border-color:var(--border);cursor:wait;transform:none}
.filter{color:var(--text);border-color:var(--control-border)}
.filter[aria-pressed=true],.filter:hover{background:var(--action);color:var(--action-text);border-color:var(--action)}
.process-step .step-num,.service-detail .eyebrow{color:var(--accent-text)}
.dark-section,.manifesto,.depth-story{background:var(--inverse);color:var(--inverse-text)}
.dark-section .index-label,.dark-section .section-top>p,.dark-section .service-description,.service-number,
.manifesto p:not(.eyebrow),.depth-heading .eyebrow,.depth-instruction,.depth-chapters,.depth-footer>p{color:var(--inverse-muted)}
/* The inline manifesto color in old generated pages is removed by the generator. */
.services-editorial,.service-row,.dark-section .section-border{border-color:var(--inverse-line)}
.depth-track{background:var(--inverse-line)}.depth-chapters li.is-active{color:#ff897e}
.tile-visual,.case-feature img,.gallery-lead,.gallery-stack>a{background:var(--frame)}
.cta-block{background:var(--cta-bg);color:var(--cta-text)}
.cta-block .small-square{background:currentColor}
.cta-block .btn{background:#211e19;color:#fff7ed;border-color:#211e19}
.cta-block .btn:hover{background:#fff7ed;color:#211e19;border-color:#fff7ed}
.cta-block :focus-visible{outline-color:#211e19}
.footer{background:var(--footer-bg);color:var(--footer-text)}
.footer-label,.footer-bottom{color:var(--footer-muted)}.footer-bottom{border-color:var(--inverse-line)}
.footer-links a:hover,.footer-bottom a:hover{color:#ff897e}
.field input,.field select,.field textarea{background:var(--page);border-color:var(--control-border);color:var(--text)}
.field select option{background:var(--page);color:var(--text)}
.field input::placeholder,.field textarea::placeholder{color:var(--subtle);opacity:1}
.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--focus);outline-offset:2px;box-shadow:none;border-color:var(--focus)}
.field [aria-invalid=true]{border-color:var(--error)}.form-status{border-color:var(--error)}.form-status.success{border-color:var(--success)}
/* Color only: no layout animation and no screenshot overlay blocking interaction. */
.theme-changing :is(body,.theme-visible,.theme-visible :is(.header,.nav,.btn,.filter,.field input,.field select,.field textarea,.case-note,.form-status,.dark-section,.manifesto,.depth-story,.cta-block,.footer,.image-badge,.gallery-caption)){transition:background-color 680ms cubic-bezier(.22,.7,.2,1),color 520ms ease,border-color 600ms ease,box-shadow 600ms ease}
.theme-changing .theme-visible :is(p,h1,h2,h3,a,span,label,dt,dd,.eyebrow,.index-label,.service-number,.timeline-number){transition:color 520ms ease,border-color 600ms ease}
/* A small forged torch: faceted handle, red collar, tapered flame. */
.theme-toggle{position:relative;isolation:isolate;order:2;flex-shrink:0;width:57px;min-height:48px;padding:4px 0;display:flex;align-items:center;justify-content:center;gap:3px;background:none;border:0;color:var(--text);touch-action:manipulation}
.theme-toggle[hidden]{display:none}.theme-toggle svg{width:23px;height:40px;overflow:visible;flex-shrink:0;transition:transform 160ms ease}
.torch-handle{fill:var(--torch-metal)}.torch-edge{stroke:var(--torch-highlight);stroke-width:1;fill:none}.torch-collar{fill:var(--red)}
.torch-flame{fill:var(--torch-flame);transform-origin:16px 21px;opacity:0;transform:scale(.1,.02)}
.torch-core{fill:#fff1bd}.torch-ember{fill:#eab16d;opacity:0}
[data-theme=light] .torch-flame,html:not([data-theme]) .torch-flame{opacity:1;transform:scale(1)}
.torch-beam{position:absolute;width:min(65vw,700px);height:min(70vh,680px);top:16px;right:27px;transform-origin:100% 0;opacity:0;pointer-events:none;z-index:-1}
.torch-beam::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 100% 0,#e7b16b30, #e7b16b0a 42%,transparent 69%);clip-path:polygon(97% 0,100% 0,100% 100%,0 100%)}
.torch-state{font-size:8px;letter-spacing:.07em;font-weight:750;min-width:20px;text-align:left;color:var(--subtle)}
.theme-toggle:active svg{transform:translateY(1px) scale(.96)}
.theme-toggle::after{content:attr(data-tooltip);position:absolute;top:calc(100% + 12px);right:0;white-space:nowrap;background:var(--action);color:var(--action-text);font-size:10px;letter-spacing:.02em;padding:9px 12px;opacity:0;transform:translateY(-3px);pointer-events:none;transition:opacity 140ms,transform 140ms}
@media(hover:hover) and (pointer:fine){.theme-toggle:hover svg{transform:translateY(-1px)}.theme-toggle:hover::after,.theme-toggle:focus-visible::after{opacity:1;transform:none}}
.header-inner{gap:18px}.nav{order:1}.motion-toggle{order:3;min-height:44px}.menu-toggle{order:4}
@media(max-width:1120px){.identity-label{display:none}.header-inner{gap:14px}.nav{gap:18px}}
@media(max-width:850px){
 .header{height:72px}.header-inner{gap:10px}.theme-toggle{margin-left:auto}.motion-toggle{order:3;margin-left:0}.menu-toggle{display:flex;z-index:90;flex-shrink:0}
 .nav{position:fixed;top:72px;bottom:0;right:0;left:0;background:var(--page);padding:28px var(--gutter) 40px;display:none;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:0;overflow:auto;border-top:1px solid var(--border)}
 .nav.open{display:flex}.nav a{font-family:var(--display);font-size:clamp(30px,8vw,48px);letter-spacing:-.055em;font-weight:700;border-bottom:1px solid var(--border);padding:16px 0}
 .nav .nav-cta{font-family:var(--font);font-size:16px;letter-spacing:0;justify-content:space-between;margin-top:22px;padding:18px}
}
@media(max-width:360px){.header-inner{gap:7px}.theme-toggle{width:48px}.identity-mark{width:50px}.motion-toggle{font-size:8px}}
@media(prefers-reduced-motion:reduce){.theme-changing *{transition:none!important}.torch-beam{display:none}.theme-toggle svg{transition:none}}
html.js:not(.motion-enabled) .theme-toggle svg{transition:none}
@media(max-width:360px){.cta-block .section-heading{font-size:54px}.case-breadcrumb{flex-wrap:wrap}.case-nav{gap:12px}.case-nav .text-link{gap:12px}}
@media(max-width:850px){html:not(.js) .header{height:auto;position:relative}html:not(.js) .header-inner{flex-wrap:wrap;padding-top:12px}html:not(.js) .menu-toggle{display:none}html:not(.js) .nav{display:flex;position:static;flex-direction:row;flex-wrap:wrap;width:100%;padding:10px 0 16px;gap:12px;border:0}html:not(.js) .nav a{font:600 14px var(--font);letter-spacing:0;padding:10px 0;border:0}html:not(.js) .nav .nav-cta{margin:0;padding:10px 12px;border:1px solid var(--text)}}
@media(max-width:600px){.section-heading .accent{white-space:normal}}
@media(max-width:360px){.case-title{font-size:48px;overflow-wrap:anywhere}}

@media(max-width:850px){.identity{gap:10px}.identity-mark{width:54px}.identity-label{font-size:17px}}
@media(min-width:480px) and (max-width:850px){.identity-label{display:block}}

/* Final shared-component polish; do not hide overflow at document level. */
.identity-label{display:block;text-transform:none}
.page-title,.section-heading,.case-copy,.plain-content,.seo-prose{overflow-wrap:anywhere}
.case-nav{flex-wrap:wrap;gap:18px}.case-nav .text-link{white-space:normal;min-width:0;max-width:100%}
.footer-links a{min-height:24px;display:inline-flex;align-items:center}
.footer-main>*{min-width:0}.footer-links a{overflow-wrap:anywhere}
.skip{z-index:2000}.skip:focus{position:fixed}
.nav.open{overscroll-behavior:contain;padding-bottom:max(40px,env(safe-area-inset-bottom))}
@media(max-width:850px){.nav.open{max-height:calc(100dvh - 72px)}}
@media(hover:none),(pointer:coarse){.tile-visual:hover img{transform:none}.tile-visual:hover:after{transform:translateY(100%)}.tile-visual:focus-visible:after{transform:none}}
