/* Copied from assets/twv-chrome.css by build.py. Edit that file, not this one. */
/* TWV Media — shared chrome.
   Header, footer, buttons and brand tokens. Loaded by every static page and by
   the WordPress blog so both share one source of truth. Edit here, nowhere else. */
.site-head,.site-head *,.site-foot,.site-foot *,.twv-welcome,.twv-welcome *{box-sizing:border-box}
.site-head,.site-foot{font-family:var(--sans);line-height:1.6}

:root{
  --ink:#14161A;
  --red:#D11A2A;
  --red-dark:#A5121F;
  --paper:#F6F4F1;
  --stone:#EDEAE4;
  --grey:#6E6E73;
  --line:#E3E0DA;
  --white:#FFFFFF;
  --sans:'Archivo',system-ui,-apple-system,'Segoe UI',sans-serif;
  --serif:'Newsreader',Georgia,serif;
  --hand:'Caveat','Segoe Script',cursive;
  --wrap:1180px;
}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 28px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
:focus-visible{outline:2px solid var(--red);outline-offset:3px}
.skip{position:absolute;left:-9999px;top:0;background:var(--ink);color:#fff;padding:12px 18px;z-index:100}
.skip:focus{left:12px;top:12px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;font-family:var(--sans);font-size:.95rem;font-weight:600;letter-spacing:-.01em;padding:15px 26px;border-radius:4px;border:1.5px solid transparent;text-decoration:none;cursor:pointer;transition:background .18s ease,color .18s ease,border-color .18s ease}
.btn-primary{background:var(--red);color:#fff}
.btn-primary:hover{background:var(--red-dark)}
.btn-ghost{background:transparent;border-color:var(--ink);color:var(--ink)}
.btn-ghost:hover{background:var(--ink);color:var(--paper)}
.btn-light{background:transparent;border-color:rgba(255,255,255,.45);color:#fff}
.btn-light:hover{background:#fff;color:var(--ink)}
.btn-sm{padding:11px 20px;font-size:.86rem}
/* ---------- header + wordmark ---------- */
.site-head{position:sticky;top:0;z-index:60;background:rgba(246,244,241,.92);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.head-in{display:flex;align-items:center;justify-content:space-between;gap:24px;height:74px}
.mark{display:flex;align-items:center;gap:13px;text-decoration:none;flex:none}
.mark .m-box{overflow:hidden}
.mark .m-rule{width:2px;height:24px;background:var(--red);flex:none;transform-origin:center;transform:scaleY(0);animation:ruleIn .26s ease-out forwards}
.mark .m-twv{display:block;font-size:1.6rem;font-weight:700;letter-spacing:-.035em;line-height:1;transform:translateX(102%);animation:fanLeft .48s cubic-bezier(.22,1,.36,1) .15s forwards}
.mark .m-media{display:block;font-size:1.06rem;font-weight:400;letter-spacing:.05em;line-height:1;transform:translateX(-102%);animation:fanRight .48s cubic-bezier(.22,1,.36,1) .15s forwards}
@keyframes ruleIn{from{transform:scaleY(0)}to{transform:scaleY(1)}}
@keyframes fanLeft{from{transform:translateX(102%);letter-spacing:-.06em}to{transform:translateX(0);letter-spacing:-.035em}}
@keyframes fanRight{from{transform:translateX(-102%);letter-spacing:.02em}to{transform:translateX(0);letter-spacing:.22em}}
.nav{display:flex;align-items:center;gap:28px}
.nav a{font-size:.94rem;font-weight:500;text-decoration:none;color:#3A3C41;transition:color .15s}
.nav a:hover{color:var(--red)}
.nav a[aria-current]{color:var(--red)}
.nav .nav-mob{display:none}
.head-cta{display:flex;align-items:center;gap:14px}
.burger{display:none;background:none;border:1.5px solid var(--line);border-radius:4px;width:44px;height:40px;align-items:center;justify-content:center;cursor:pointer}
.burger span{display:block;width:18px;height:1.5px;background:var(--ink);position:relative}
.burger span::before,.burger span::after{content:"";position:absolute;left:0;width:18px;height:1.5px;background:var(--ink)}
.burger span::before{top:-6px}
.burger span::after{top:6px}
/* ---------- client login (the key in the header and the client pass it opens) ---------- */
/* The key sits after the two calls to action, behind a hairline, so it reads as a utility rather than a third button.
   Without JavaScript it is a plain link to /members/, which sends anyone signed out to the WordPress login.
   twv-chrome.js turns it into a toggle for the client pass, and into a Dashboard link once someone is signed in. */
.client-key{position:relative;display:inline-flex;align-items:center;justify-content:center;flex:none;width:44px;height:40px;margin-left:2px;padding:0 0 0 12px;border-left:1px solid var(--line);font-family:var(--sans);color:#3A3C41;text-decoration:none;cursor:pointer;transition:color .15s}
.client-key .ck-ico{position:relative;display:inline-flex}
.client-key svg{width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;transition:transform .32s cubic-bezier(.22,1,.36,1),stroke .15s}
.client-key:hover,.client-key:focus-visible,.client-key[aria-expanded="true"]{color:var(--ink)}
.client-key:hover svg,.client-key:focus-visible svg{transform:translateX(2px);stroke:var(--red)}
.client-key[aria-expanded="true"] svg{transform:rotate(90deg);stroke:var(--red)}
.client-key.is-in .ck-ico::after{content:"";position:absolute;top:0;right:-3px;width:7px;height:7px;border-radius:50%;background:var(--red);box-shadow:0 0 0 2px var(--paper)}
/* the words hang under the key like a key tag, on hover and keyboard focus, so they take no room in the header */
.client-key .ck-label{position:absolute;top:calc(100% + 9px);right:-8px;padding:5px 10px 5px 19px;border-radius:3px;background:var(--ink);color:var(--paper);font-size:.74rem;font-weight:600;letter-spacing:.01em;line-height:1.2;white-space:nowrap;pointer-events:none;opacity:0;transform:translateY(-4px) rotate(0);transform-origin:calc(100% - 24px) -9px;transition:opacity .15s,transform .2s}
.client-key .ck-label::before{content:"";position:absolute;right:24px;top:-9px;width:1px;height:9px;background:var(--ink)}
.client-key .ck-label::after{content:"";position:absolute;left:8px;top:50%;width:5px;height:5px;margin-top:-2.5px;border-radius:50%;background:var(--paper);opacity:.85}
.client-key:hover .ck-label,.client-key:focus-visible .ck-label{opacity:1;transform:none;animation:ckSwing .9s cubic-bezier(.36,.07,.19,.97)}
.client-key[aria-expanded="true"] .ck-label{opacity:0;animation:none}
@keyframes ckSwing{0%{transform:rotate(9deg)}30%{transform:rotate(-6deg)}55%{transform:rotate(3.5deg)}78%{transform:rotate(-1.5deg)}100%{transform:rotate(0)}}
.nav .nav-client,.nav.open .nav-mob.nav-client{display:none}

.client-pass{position:absolute;top:calc(100% + 10px);right:max(16px,calc((100% - var(--wrap))/2 + 28px));z-index:70;width:min(372px,calc(100vw - 32px));font-family:var(--sans);line-height:1.5;box-sizing:border-box}
.client-pass *{box-sizing:border-box}
.client-pass[hidden]{display:none}
.cp-card{position:relative;overflow:hidden;overflow-y:auto;max-height:calc(100vh - 100px);border-radius:14px;padding:22px 24px 20px;background:linear-gradient(150deg,#22252B 0%,var(--ink) 55%,#0E1013 100%);color:var(--paper);box-shadow:0 1px 0 rgba(255,255,255,.06) inset,0 24px 50px -18px rgba(20,22,26,.55),0 4px 14px rgba(20,22,26,.18)}
.cp-card::before{content:"";position:absolute;inset:0;background:repeating-linear-gradient(115deg,rgba(255,255,255,.022) 0 2px,transparent 2px 7px);pointer-events:none}
.client-pass.is-opening .cp-card{animation:cpOut .38s cubic-bezier(.22,1,.36,1)}
@keyframes cpOut{from{transform:translateY(-14px);clip-path:inset(0 0 100% 0 round 14px);opacity:.4}to{transform:none;clip-path:inset(0 0 0 0 round 14px);opacity:1}}
.cp-top{position:relative;display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}
.cp-mark{display:flex;align-items:center;gap:9px;color:var(--paper)}
.cp-mark b{font-size:1.08rem;font-weight:700;letter-spacing:-.035em;line-height:1}
.cp-mark i{width:2px;height:16px;background:var(--red)}
.cp-mark span{font-size:.74rem;letter-spacing:.22em;line-height:1}
.cp-x{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;margin:-6px -8px -6px 0;padding:0;border:0;border-radius:50%;background:transparent;color:#9A9BA0;cursor:pointer;transition:color .15s,background .15s}
.cp-x:hover{color:var(--paper);background:rgba(255,255,255,.08)}
.cp-x svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round}
.cp-card h2{position:relative;margin:0 0 4px;font-size:1.28rem;font-weight:600;letter-spacing:-.025em;line-height:1.2;color:var(--paper)}
.cp-sub{position:relative;margin:0 0 18px;font-size:.88rem;color:#A9AAAF}
.cp-err{position:relative;margin:0 0 16px;padding:10px 12px;border-left:3px solid var(--red);background:rgba(209,26,42,.14);font-size:.86rem;color:#F3D3D6}
.cp-err[hidden]{display:none}
.cp-err a{color:#fff}
.cp-form{position:relative;display:grid;gap:13px;margin:0}
.cp-form label{display:grid;gap:6px;font-size:.8rem;font-weight:600;color:#C9C9CD}
.cp-form input[type=text],.cp-form input[type=password]{width:100%;margin:0;font:inherit;font-size:.98rem;font-weight:400;padding:11px 13px;border:1.5px solid rgba(255,255,255,.16);border-radius:6px;background:rgba(255,255,255,.06);color:var(--paper);transition:border-color .15s,background .15s}
.cp-form input[type=text]:hover,.cp-form input[type=password]:hover{border-color:rgba(255,255,255,.3)}
.cp-form input[type=text]:focus,.cp-form input[type=password]:focus{outline:none;border-color:var(--red);background:rgba(255,255,255,.09)}
.cp-form .cp-keep{display:flex;align-items:center;gap:9px;font-weight:500;color:#A9AAAF;cursor:pointer}
.cp-form .cp-keep input{width:16px;height:16px;margin:0;accent-color:var(--red)}
.cp-form .btn{width:100%;margin-top:4px;padding:13px 20px}
.cp-form .btn:disabled{opacity:.7;cursor:progress}
.cp-links{position:relative;display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 16px;margin:16px 0 0;padding-top:14px;border-top:1px solid rgba(255,255,255,.1);font-size:.82rem;color:#9A9BA0}
.cp-links a{color:#C9C9CD;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.2);transition:color .15s,border-color .15s}
.cp-links a:hover{color:#fff;border-color:var(--red)}
/* ---------- footer ---------- */
/* Brand column (with address and social icons) plus three link columns: Growth, Build and AI, Company. */
.site-foot{background:#0E1013;color:#9A9BA0;padding:64px 0 34px;font-size:.93rem}
.foot-grid{display:grid;grid-template-columns:minmax(0,clamp(200px,24vw,300px)) repeat(4,max-content);justify-content:space-between;gap:32px 24px;align-items:start;padding-bottom:44px;border-bottom:1px solid rgba(255,255,255,.13)}
.site-foot h4{color:var(--paper);font-size:.78rem;letter-spacing:.16em;text-transform:uppercase;margin-bottom:16px;font-weight:600}
.site-foot ul{list-style:none;margin:0;padding:0}
.site-foot li{margin-bottom:10px;line-height:1.5}
.site-foot li a{white-space:nowrap}
.site-foot a{text-decoration:none;transition:color .15s}
.site-foot a:hover{color:var(--red)}
.site-foot a[aria-current]{color:var(--paper)}
.foot-mark{display:flex;align-items:center;gap:13px;margin-bottom:18px}
.foot-mark .r{width:2px;height:22px;background:var(--red)}
.foot-mark .a{font-size:1.45rem;font-weight:700;letter-spacing:-.035em;color:var(--paper)}
.foot-mark .b{font-size:1rem;letter-spacing:.22em;color:var(--paper)}
.foot-addr{font-style:normal;margin:0;color:#9A9BA0}
.site-foot .foot-social{list-style:none;display:flex;flex-wrap:wrap;gap:10px;margin:22px 0 0;padding:0}.site-foot .foot-social li{margin:0}.foot-social a{display:flex;align-items:center;justify-content:center;width:38px;height:38px;border:1px solid rgba(255,255,255,.18);border-radius:50%;color:#9A9BA0;transition:color .15s,border-color .15s,background .15s}.foot-social a:hover,.foot-social a:focus-visible{color:#fff;border-color:var(--red);background:var(--red)}.foot-social a:focus-visible{outline:2px solid var(--paper);outline-offset:2px}.foot-social svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.foot-bottom{display:flex;flex-wrap:wrap;gap:14px 30px;justify-content:space-between;padding-top:26px;font-size:.85rem}
.foot-bottom a[aria-current]{color:var(--paper)}

@media (max-width:1140px){
  .head-cta-2{display:none}
}
@media (max-width:999px){
  /* the TWV Media block moves above, and the four lists still share one row */
  .foot-grid{grid-template-columns:repeat(4,max-content);gap:34px 24px}
  .foot-grid>div:first-child{grid-column:1/-1;max-width:520px}
}
@media (max-width:960px){
  .nav{display:none}
  .nav.open .nav-mob{display:block}
  .nav.open{display:flex;position:absolute;left:0;right:0;top:74px;flex-direction:column;align-items:flex-start;gap:0;background:var(--paper);border-bottom:1px solid var(--line);padding:8px 28px 20px}
  .nav.open a{padding:14px 0;width:100%;border-bottom:1px solid var(--line)}
  .burger{display:inline-flex}
  .head-cta .btn{padding:10px 15px;font-size:.84rem}
}
@media (max-width:720px){
  /* phones and small tablets: two even columns of two lists */
  .foot-grid{grid-template-columns:repeat(2,1fr);gap:34px 28px}
  .foot-grid>div:first-child{grid-column:1/-1;max-width:460px}
}
@media (max-width:560px){
  .wrap{padding:0 20px}
  .mark{gap:10px}
  .mark .m-twv{font-size:1.36rem}
  .mark .m-media{font-size:.92rem}
  .head-cta{gap:10px}
  .head-cta .btn{padding:9px 12px;font-size:.78rem;white-space:nowrap}
  /* on phones the key moves into the menu, where there is room to say what it is */
  .head-cta .client-key{display:none}
  .nav.open .nav-mob.nav-client{display:block}
  .client-pass{right:16px;left:16px;width:auto}
  /* four even lists in two columns: smaller type and a tighter gap keep every link on one line */
  .foot-grid{gap:30px 18px}
  .site-foot li{margin-bottom:9px}
  .site-foot li a{font-size:.84rem}
}
@media (max-width:359px){
  .site-foot li a{font-size:.74rem}
  .foot-grid{gap:28px 12px}
}
/* ---------- banner visit welcome (added by twv-chrome.js) ---------- */
.twv-welcome{background:var(--paper);border-bottom:1px solid var(--line);font-family:var(--sans);line-height:1.5}
.twv-welcome-in{display:flex;align-items:center;gap:16px 22px;padding-top:16px;padding-bottom:16px}
.twv-welcome p{flex:1;margin:0;border-left:3px solid var(--red);padding-left:16px;font-size:.95rem;color:#3A3C41}
.twv-welcome strong{color:var(--ink);font-weight:600}
.twv-welcome .btn{flex:none}
.twv-welcome-x{flex:none;display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border:1.5px solid var(--line);border-radius:4px;background:transparent;cursor:pointer;transition:border-color .15s}
.twv-welcome-x:hover{border-color:var(--ink)}
.twv-welcome-x svg{width:16px;height:16px;fill:none;stroke:var(--ink);stroke-width:1.8;stroke-linecap:round}
@media (max-width:720px){
  .twv-welcome-in{flex-wrap:wrap}
  .twv-welcome p{flex:1 1 calc(100% - 60px);order:1}
  .twv-welcome-x{order:2}
  .twv-welcome .btn{order:3}
}
@media (prefers-reduced-motion:reduce){
  .mark .m-rule{transform:scaleY(1)}
  .mark .m-twv,.mark .m-media{transform:none}
  .site-head *,.site-foot *{animation-duration:.001ms!important;animation-delay:0ms!important;transition-duration:.001ms!important}
  .client-pass.is-opening .cp-card,.client-key .ck-label{animation:none!important}
}
