The world’s strictest sustainable travel directory, read by high-spend travellers. Editorial features, hotel and brand photography and hotel video production that are hosted permanently and built to rank on Google.
Who you reach
Hold The Throne · QOV · My Ideal World
Av. monthly website visitors
0K
Avg retail spend
$0
Avg food spend
$0
Avg travel spend
$0
Combined followers
0K
Monthly views
0M
Stats based on Hold The Throne, QOV and My Ideal World combined; the audience pool is the same.
What you get
Everything you receive is yours to keep and use
Sponsored Feature
from £3,000
Four 1,500-word features on your property, written on site with professional photography and video. SEO built in: written to rank first on Google for your keywords, hosted permanently on a directory travellers already trust.
Permanent hosting, never comes down Photography and video included Pays back in five to eight room-nights
Video Documentary
from £18,000
A film you own forever, not an ad you rent. 20 to 70 minutes of broadcast-quality video production: interviews, immersive tours and atmospheric b-roll, cut into a documentary or episodes.
Full rights, yours to keep 8 to 12 social media reels included £450 per finished minute
Photography / Media Center
from £3,000
200 professionally edited hotel and brand photos covering every angle that sells, delivered within days of the shoot.
Sized for web, Booking, Airbnb and Expedia Social media cuts included Delivered in days
The directory already ranks on page one for sustainable hotels, eco resorts and eco lodges.
Savera Beach Houses, Zanzibar
Ranked first on third-party booking sites after our film and photography.
Cocco Beach, Colombia
The wedding film and photo set became their primary source of direct bookings.
Maha Rose, New York
New site won a serious corporate client within the hour of launch.
How we compare
Condé Nast Traveller
€30,000 + €3,455 setup
Eight weeks of placement, then it comes down. Written from a press release, never visited.
Hold The Throne feature
£3,000, permanent
Written on site, in person, with photography and video. Hosted forever and built to rank.
London production agency
£50,000 to £100,000+
A 30-second spot, often without owning the rights. Campaign expires; the retainer continues.
Hold The Throne documentary
from £18,000, yours forever
Full rights. Keeps converting across your site, socials and sales decks for years.
Where I work, and what I did there
108 countries · in person, on site
London and the UK
Adagio, Westminster School, UK institutions
Website development in LondonBrand videography in LondonHotel SEO in London
The Caribbean
Barbados, Jamaica, St Vincent, Antigua
Hotel photography in the CaribbeanBrand videography in the CaribbeanWebsite development in the Caribbean
Barbados
Coco Hill Forest, Ocean Spray
Website development in BarbadosBrand photography in BarbadosDocumentary film in Barbados
Jamaica
Charela Inn, Le Mirage
Hotel photography in JamaicaHotel videography in JamaicaEditorial and SEO in Jamaica
St Vincent and the Grenadines
Frangipani, Bekonos, Flo Marine
Hotel photography in St VincentProperty tour videography in St Vincent
Zanzibar and Tanzania
Savera Beach Houses, Upepo Safari
Drone photography in ZanzibarTravel videography in ZanzibarBooking-site imagery in Zanzibar
Botswana and Zimbabwe
Tuli Safari Lodge, Gorges Lodge, Hwange
Safari photography in BotswanaCinematic brand film in Botswana
Mexico and Colombia
Posada Arigalan, Cocco Beach
Website development in MexicoWedding videography in MexicoHotel photography in Mexico
Dominican Republic
Vogue, Lindt
Investigative journalism in Dominican RepublicBrand documentary in Dominican Republic
Namibia and Mozambique
Tourism boards
Tourism adverts in NamibiaDestination videography in Namibia
Clients & references
Vogue · Lindt · Marriott · 6,000+ more · 108 countries
Vogue
Dominican Republic
Investigative, boots-on-the-ground journalism for a Vogue follow-up on plastic pollution. Policy change is the next step.
Lindt
Dominican Republic
Filming Lindt’s organic cocoa forest with the farmers, giving full transparency for future consumers.
Adagio
East London, UK
Premium aparthotel chain with 110+ locations across Europe. We position Adagio as the premium stay in East London. Plus eight editorial articles built to rank on Google.
Tuli Safari Lodge
Tuli Game Reserve, Botswana
Luxury wildlife lodge in the Northern Tuli Game Reserve. For their awards campaign we reinvented their entire visual presence: high-end safari photography and a five-minute cinematic brand film.
Gorges Lodge by Imvelo
Victoria Falls, Zimbabwe
Perched on the edge of the Batoka Gorge. We filmed the spa, the hiking trail and the community visit, told as part of their wider conservation story.
Hwange Safari
Hwange, Zimbabwe
Five-star luxury wildlife lodge. A full wedding film and 300+ photos and videos, with three months of social content for the lodge.
Posada Arigalan
Mazunte, Mexico
Boutique yoga and meditation hotel. Website redesigned and rebuilt with custom code in eight days, plus 300+ photos and videos and two months of scheduled posts.
Charela Inn
Negril, Jamaica
Family-run sustainable hotel on the seven mile beach. All of their visuals: photography, a biopic film, property tours and live music films, plus editorial features and SEO built to rank for conscious stays in Jamaica.
Bekonos
Bequia, St Vincent & the Grenadines
Solar-powered beachfront villa on Bequia. All of their visuals: photography of the villa, pool and grounds and a film, cut for web, socials and the booking platforms.
Coco Hill Forest
cocohillforest.com · Barbados
53 acres of regenerative agroforestry above the east coast. We built the entire website, shot all the photography and are producing a documentary on the forest and the people who farm it.
Ocean Spray Apartments
oceansprayapartments.com · Barbados
Full website design and build plus all photography, from rooms and pool to the shoreline, delivered ready for the booking platforms and social.
Savera Beach Houses
Zanzibar, Tanzania
Beach houses on the coast of Zanzibar. Drone footage, photography and a travel video ranked them first on third-party booking sites.
Flo Marine
Mustique, St Vincent & the Grenadines
All visuals for this eco-luxe villa: interior and exterior photography, a preview film and a long-form property tour.
Upepo Safari
Selous Game Reserve, Tanzania
Wildlife excursions in the Selous and a boutique hotel in Dar es Salaam. A four-day wildlife shoot plus hotel and grounds photography for the booking platforms.
Cocco Beach
Caribbean coast, Colombia
Beach cabins and wedding venue. A full wedding film and 300+ photos and videos that became their primary booking source.
Frangipani
Bequia, St Vincent & the Grenadines
Beloved family-run hotel on the waterfront. Host-led editorial, photography and film, and SEO to reach the right travellers.
LambLion
Antigua
Sustainable vacation rental positioned as a standout conscious stay through editorial content, hotel photography, film and SEO.
Ian Wilkes
In progress
In progress, not yet finished. Personal brand site for Ian Wilkes, the Embodied King: landing page mockups, full build, photography direction and a booking flow for his programmes.
To get started
Tell me about your place or brand. I reply personally.
(function(){
function norm(s){return String(s||'').replace(/\s+/g,' ').trim()}
function htmlEsc(s){var d=document.createElement('div');d.textContent=String(s??'');return d.innerHTML}
function valid(v){return v!==undefined&&v!==null&&v!==''&&!(Array.isArray(v)&&!v.length)}
function directHost(url){try{return new URL(url,location.origin).hostname.replace(/^www\./,'')}catch(e){return ''}}
function isAffiliate(url){
var h=directHost(url);
return /(^|\.)(tidd\.ly|awin1\.com|awin\.com|shareasale\.com|anrdoezrs\.net|jdoqocy\.com|tkqlhce\.com|pjatr\.com)$/i.test(h);
}
function sourceLink(url){
if(!url||!/^https?:\/\//i.test(url)||isAffiliate(url))return '';
return '
';
}
function valueText(v){
if(v===true)return 'Yes';
if(v===false)return 'No';
if(Array.isArray(v))return v.map(valueText).filter(Boolean).join(' · ');
if(v&&typeof v==='object')return '';
var tmp=document.createElement('div');tmp.innerHTML=String(v??'');return norm(tmp.textContent);
}
function labelKey(label){
var n=norm(label).toLowerCase();
var aliases={
'shipping international':'shipping_international',
'shipping notes':'shipping_notes',
'website check':'website_check',
'website verified':'website_verified',
'verification status':'verification_status',
'excluded items':'excluded_products',
'sku count':'sku_count',
'products found':'products_found',
'products with list':'products_with_list',
'products no list':'products_no_list',
'brand site readable':'brand_site_readable',
'sources checked':'sources_checked',
'full catalogue scan':'full_catalogue_scan',
'full catalogue reason':'full_catalogue_reason',
'scan publication status':'scan_publication_status',
'scan method version':'scan_method_version',
'scan denominator':'scan_denominator',
'scan products read':'scan_products_read',
'incomplete count':'incomplete_count',
'incomplete note':'incomplete_note',
'factory certifications':'factory_certifications',
'supplier disclosure':'supplier_disclosure',
'traceability level':'traceability_level'
};
if(aliases[n])return aliases[n];
return n.replace(/®/g,'').replace(/%/g,'pct').replace(/[^a-z0-9]+/g,'_').replace(/^_+|_+$/g,'');
}
function sourceFor(acf,key){
var aliases={
gots:'gots_source',
'oeko-tex_standard_100':'oeko_source',
fairtrade:'fairtrade_source',
planet:'onepercent_source'
};
var candidates=[key+'_source',key+'_src',aliases[key]].filter(Boolean);
for(var i=0;i .hs-section'));
function byTitle(title){return sections.find(function(s){var h=s.querySelector('.hs-h2,.hs-eyebrow,h2,h3');return h&&new RegExp('^'+title+'$','i').test(norm(h.textContent))})}
var filed=byTitle('Filed under'),explore=byTitle('Keep exploring');
if(filed)root.appendChild(filed);
if(explore)root.appendChild(explore);
}
function keepExploring(){
var root=findRoot();if(!root)return;
[].slice.call(root.querySelectorAll('a.hs-btn')).forEach(function(a){
if(/^Compare records$/i.test(norm(a.textContent))){
a.href='/extensions/chrome/';
a.textContent='Chrome extension';
}
});
}
function officialSite(acf,brand){
var candidates=[
brand&&brand.site,
acf&&acf.scan_shop,
acf&&acf.official_website,
acf&&acf.website
].filter(Boolean);
for(var i=0;i<candidates.length;i++){
if(/^https?:\/\//i.test(candidates[i])&&!isAffiliate(candidates[i]))return candidates[i];
}
return '';
}
function replaceAffiliateLinks(site){
if(!site)return;
var root=findRoot();if(!root)return;
root.querySelectorAll('a[href]').forEach(function(a){
if(isAffiliate(a.href)){a.href=site;a.textContent='Visit Website';a.target='_blank';a.rel='noopener'}
});
root.querySelectorAll('td').forEach(function(td){
if(/https?:\/\/(?:www\.)?(?:tidd\.ly|awin1?\.com|shareasale\.com|anrdoezrs\.net|jdoqocy\.com|tkqlhce\.com)/i.test(td.textContent||'')){
td.innerHTML='Visit Website';
}
});
}
function fixFullReport(acf,brand){
var report=document.getElementById('htt-full-record');if(!report)return;
var site=officialSite(acf,brand);
report.querySelectorAll('tr[data-htt-record-row], table tr').forEach(function(row){
var th=row.querySelector('th');var td=row.querySelector('td');if(!th||!td)return;
var label=norm(th.textContent),low=label.toLowerCase();
var placeholder=/Source-backed finding pending|Provide evidence for this field/i.test(td.textContent||'');
if(/^price$/i.test(label)){row.remove();return}
if(/^(website|official website|buy link|shop link)$/i.test(label)){
if(site)td.innerHTML='Visit Website';
else row.remove();
return;
}
if(/^sku count$/i.test(label)){
var c=brand&&brand.canonical||{};
var count=c.sku_count??c.product_count??c.catalogue_total??(brand&&brand.counts&&brand.counts.scanned);
if(valid(count)){td.textContent=String(count);return}
}
if(!placeholder)return;
var key=labelKey(label),v=acf[key];
if(key==='excluded_products'&&!valid(v)&&valid(acf.excluded_note))v=acf.excluded_note;
if(!valid(v)){row.remove();return}
td.innerHTML='
'+htmlEsc(valueText(v))+'
'+sourceLink(sourceFor(acf,key));
});
report.querySelectorAll('[data-htt-record-group]').forEach(function(group){
var rows=[].slice.call(group.querySelectorAll('tbody tr')).filter(function(r){return r.isConnected&&!r.hidden});
if(!rows.length){group.remove();return}
var count=group.querySelector('.hs-group-head span');
if(count&&/fields recorded/i.test(count.textContent||''))count.textContent=rows.length+' fields shown';
});
}
function certRow(name,claim,source,scope){
if(!claim)return ''; var yes=/brand\/company membership/i.test(scope||'')&&!/\bnot\b/i.test(claim); var badge=''+(yes?'Yes':'No')+'';
return '
'+htmlEsc(name)+'
'+
'
'+badge+htmlEsc(claim)+'
'+
(scope?'
Scope: '+htmlEsc(scope)+'. A product, material, factory or supplier certificate is not treated as a brand certificate.
':'')+
sourceLink(source)+'
';
}
function fixCertifications(acf){
var report=document.getElementById('htt-full-record');if(!report)return;
var group=[].slice.call(report.querySelectorAll('[data-htt-record-group],.hs-group')).find(function(g){
var h=g.querySelector('.hs-group-head h3,h3');return h&&/^Certifications and memberships$/i.test(norm(h.textContent));
});
if(!group)return;
var factory=valueText(acf.factory_certifications||'');
var rows='';
rows+=certRow('GOTS',valueText(acf.gots||''),acf.gots_source||'','Brand/company versus certified cotton, material or supplier');
rows+=certRow('OEKO-TEX Standard 100',valueText(acf['oeko-tex®_standard_100']||''),acf.oeko_source||'','Brand/company versus fabric, component or supplier');
var bcorp=valueText(acf.other_certifications||'');
if(/B Corp/i.test(factory)&&!/B Corp/i.test(bcorp))bcorp=(bcorp?bcorp+' ':'')+'Kent also attributes B Corp certification to a supply-chain partner; this is not a Kent corporate certification.';
rows+=certRow('B Corp',bcorp,acf.bcorp_source||'','Brand/company versus supplier or farm');
if(valid(acf.planet)||valid(acf.onepercent_source)){
rows+=certRow('1% for the Planet',valueText(acf.planet||'Listed in the official 1% for the Planet directory.'),acf.onepercent_source||'','Brand/company membership');
}
if(/Fairtrade|Fair Trade/i.test(factory)){
rows+=certRow('Fair Trade',factory,acf.fairtrade_source||acf.gots_source||'','Factory, farm or supplier claim unless Kent itself is named');
}
if(/\bGRS\b/i.test(factory)){
rows+=certRow('GRS',factory,acf.gots_source||acf.fairtrade_source||'','Factory or supplier certification claim');
}
if(!rows){group.remove();return}
var table=group.querySelector('table');
if(table)table.innerHTML=''+rows+'';
var intro=group.querySelector(':scope > p');
if(intro)intro.textContent='Certification scope is shown exactly as held: brand/company, product/material, factory or supplier. Supplier certification is not brand certification.';
}
function sortVisibleProductRows(){
document.querySelectorAll('table.htt-sku-results tbody').forEach(function(body){
var rows=[].slice.call(body.querySelectorAll('tr'));
rows.sort(function(a,b){
function rank(r){
var t=norm(r.textContent);
var cells=r.children;
var comp=cells[1]?norm(cells[1].textContent):'';
return (/non-composition|Normalized breakdown not available|Excluded from textile composition/i.test(t)||!comp)?1:0;
}
return rank(a)-rank(b);
});
rows.forEach(function(r){body.appendChild(r)});
});
}
function fixFullReportLabels(acf,brand){
var report=document.getElementById('htt-full-record');if(!report)return;
report.querySelectorAll('tr').forEach(function(row){
var th=row.querySelector('th'),td=row.querySelector('td');if(!th||!td)return;
var label=norm(th.textContent);
var fm=label.match(/^Feature\s+(\d+)$/i);
if(fm){th.textContent='Fact '+fm[1];label=th.textContent;}
if(/^(Brand site readable|Verification status|Shop link)$/i.test(label)){row.remove();return;}
if(/^Fibre Breakdown$/i.test(label)){
var c=brand&&brand.canonical||{};
var assessed=Number(c.composition_assessed_count);
var plant=Number(c.composition_plant_share_pct);
var coverage=Number(c.composition_coverage_pct);
var missing=Number(c.composition_missing_count);
if(Number.isFinite(assessed)&&Number.isFinite(plant)){
var text=assessed+' assessed products · '+plant.toFixed(plant%1?1:0)+'% plant fibre';
if(plant===100&&(!Number.isFinite(coverage)||coverage>=99.999)&&(!Number.isFinite(missing)||missing===0)){
text+=' · 0% animal · 0% synthetic · 0% semi-synthetic';
}
td.textContent=text;
}
}
});
report.querySelectorAll('a').forEach(function(a){
if(/^Read recorded source$/i.test(norm(a.textContent)))a.textContent='Source';
});
report.querySelectorAll('[data-htt-record-group],.hs-group').forEach(function(group){
var h=group.querySelector('.hs-group-head h3,h3');
if(h&&/^Claims and evidence$/i.test(norm(h.textContent)))h.textContent='Excluded and unscored';
var rows=[].slice.call(group.querySelectorAll('tbody tr')).filter(function(r){return r.isConnected&&!r.hidden});
if(!rows.length){group.remove();return;}
var count=group.querySelector('.hs-group-head span');
if(count&&/fields (?:shown|recorded)/i.test(count.textContent||''))count.textContent=rows.length+' fields shown';
});
}
function httFinalPolish(acf,brand){
var report=document.getElementById('htt-full-record');
var root=findRoot();
/* Score card: the label is the rules link; remove the duplicate methodology CTA. */
if(root){
root.querySelectorAll('a').forEach(function(a){
if(/^Read the scoring methodology and worked examples$/i.test(norm(a.textContent))){
var p=a.parentElement;a.remove();if(p&&/^P$/i.test(p.tagName)&&!norm(p.textContent))p.remove();
}
});
var scoreBand=root.querySelector('.hs-band.hs-two')||root;
scoreBand.querySelectorAll('*').forEach(function(el){
if(el.querySelector&&el.querySelector('a'))return;
if(/^THRONE SCORE\b/i.test(norm(el.textContent))){
el.innerHTML=el.innerHTML.replace(/THRONE SCORE/i,'THRONE SCORE');
}
});
}
/* Hero: keep only the category eyebrow; location belongs in Place and access. */
if(root){
root.querySelectorAll('.hs-eyebrow').forEach(function(el){
var t=norm(el.textContent);
if(/\blocated\b/i.test(t)&&t.indexOf('·')>-1)el.textContent=t.split('·')[0].trim();
});
}
if(!report)return;
/* Features are editorial facts on the report. */
report.querySelectorAll('.hs-group-head h3,h3').forEach(function(h){
if(/^Features$/i.test(norm(h.textContent)))h.textContent='Facts';
});
/* Compact label column for certification rows. */
var cert=[].slice.call(report.querySelectorAll('[data-htt-record-group],.hs-group')).find(function(g){
var h=g.querySelector('.hs-group-head h3,h3');
return h&&/^Certifications and memberships$/i.test(norm(h.textContent));
});
if(cert)cert.classList.add('htt-cert-compact');
if(!document.getElementById('htt-final-report-polish-style')){
var style=document.createElement('style');
style.id='htt-final-report-polish-style';
style.textContent='#htt-full-record .htt-cert-compact table th[scope="row"]{width:16%!important;max-width:16%!important}#htt-full-record .htt-cert-compact table td{width:84%!important}@media(max-width:700px){#htt-full-record .htt-cert-compact table th[scope="row"]{width:22%!important;max-width:22%!important}#htt-full-record .htt-cert-compact table td{width:78%!important}}';
document.head.appendChild(style);
}
function prettySource(url){
var host='';try{host=new URL(url,location.origin).hostname.replace(/^www\./,'').toLowerCase()}catch(e){}
if(/wearkent\.com$/.test(host))return (brand&&brand.name)||document.title.split('|')[0].trim()||'Website';
if(/goodonyou\.eco$/.test(host))return 'Good On You';
if(/sustainablebusinessmagazine\.net$/.test(host))return 'Sustainable Business Magazine';
if(/circle-economy\.com$/.test(host))return 'Circle Economy';
if(/onepercentfortheplanet\.org$/.test(host))return '1% for the Planet';
if(/causeartist\.com$/.test(host))return 'Causeartist';
if(/linkedin\.com$/.test(host))return 'LinkedIn';
if(/instagram\.com$/.test(host))return 'Instagram';
if(/tiktok\.com$/.test(host))return 'TikTok';
return host?host.replace(/\.[a-z]{2,}$/i,'').split(/[.-]/).map(function(w){return w?w[0].toUpperCase()+w.slice(1):''}).join(' '):'Website';
}
function anchors(urls){
var seen={};
return urls.filter(function(u){if(seen[u])return false;seen[u]=1;return true}).map(function(u){
return ''+htmlEsc(prettySource(u))+' ↗';
}).join(' · ');
}
/* Turn raw source URL fields into named, new-tab links. */
report.querySelectorAll('tr').forEach(function(row){
var th=row.querySelector('th'),td=row.querySelector('td');if(!th||!td)return;
var label=norm(th.textContent),key=labelKey(label);
var raw='';
if(/^Where the sourcing info was verified$/i.test(label))raw=String(acf.sourcing_sources||'');
else if(/^1% for the Planet Source$/i.test(label))raw=String(acf.onepercent_source||'');
else if(/^PFAS source$/i.test(label))raw=String(acf.cs_pfas_src||'');
else if(/^Take-back source$/i.test(label))raw=String(acf.cs_takeback_repair_src||'');
else if(/source$|link$/i.test(label))raw=valueText(acf[key]||td.textContent||'');
var urls=(raw.match(/https?:\/\/[^\s]+/g)||[]).map(function(u){return u.replace(/[),.;]+$/,'')});
if(urls.length){
td.innerHTML=anchors(urls);
return;
}
/* Raw URL-only cells such as Owner Link, Instagram and TikTok. */
var text=norm(td.textContent),found=text.match(/https?:\/\/[^\s]+/g)||[];
if(found.length&&norm(text.replace(/https?:\/\/[^\s]+/g,''))===''){
td.innerHTML=anchors(found.map(function(u){return u.replace(/[),.;]+$/,'')}));
}
});
/* The source-list row already contains the links; remove duplicated Source labels. */
report.querySelectorAll('tr').forEach(function(row){
var th=row.querySelector('th'),td=row.querySelector('td');if(!th||!td)return;
if(/^Where the sourcing info was verified$/i.test(norm(th.textContent))){
[].slice.call(td.querySelectorAll('a')).forEach(function(a){
if(/^Source$/i.test(norm(a.textContent)))a.remove();
});
}
});
/* Replace the old report-search listener with a deterministic filter. */
var input=report.querySelector('input[data-htt-full-search]');
if(input&&!input.dataset.httFixedSearch){
var clean=input.cloneNode(true);
clean.dataset.httFixedSearch='1';
input.parentNode.replaceChild(clean,input);
clean.addEventListener('input',function(){
var q=norm(clean.value).toLowerCase();
report.querySelectorAll('[data-htt-record-group],.hs-group').forEach(function(group){
var titleEl=group.querySelector('.hs-group-head h3,h3');
var title=norm(titleEl&&titleEl.textContent).toLowerCase();
var titleMatch=q!==''&&title.indexOf(q)>-1;
var rows=[].slice.call(group.querySelectorAll('tbody tr'));
var any=titleMatch;
rows.forEach(function(row){
var hit=!q||titleMatch||norm(row.textContent).toLowerCase().indexOf(q)>-1;
row.hidden=!hit;
if(hit)any=true;
});
group.hidden=!!q&&!any;
});
});
}
}
function run(){
var p=getTypeSlug();
if(!p.type||!p.slug)return;
Promise.all([
fetch('/wp-json/wp/v2/'+encodeURIComponent(p.type)+'?slug='+encodeURIComponent(p.slug)+'&per_page=1&_fields=id,acf',{credentials:'same-origin',cache:'no-store'}).then(function(r){return r.ok?r.json():[]}).catch(function(){return []}),
fetch('/wp-json/htt/v1/brands/'+encodeURIComponent(p.slug),{credentials:'same-origin',cache:'no-store'}).then(function(r){return r.ok?r.json():null}).catch(function(){return null})
]).then(function(res){
var record=res[0]&&res[0][0]||{},acf=record.acf||{},brand=res[1]||{};
keepExploring();
replaceAffiliateLinks(officialSite(acf,brand));
fixFullReport(acf,brand);
fixCertifications(acf);
sortVisibleProductRows();
fixFullReportLabels(acf,brand);
httFinalPolish(acf,brand);
moveTail();
});
}
if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',run,{once:true});else run();
setTimeout(run,600);
})();
(function(){
if(!/^\/clothes\//i.test(location.pathname)) return;
function norm(s){ return String(s||'').replace(/\s+/g,' ').trim(); }
function num(s){
var m=String(s||'').match(/-?\d+(?:\.\d+)?/);
return m ? parseFloat(m[0]) : 0;
}
function currentCompareColumn(){
var table=Array.from(document.querySelectorAll('table')).find(function(t){
return /COMPARE BRANDS/i.test((t.previousElementSibling&&t.previousElementSibling.textContent)||'') ||
/YOU(?:'|’)?RE VIEWING/i.test(t.textContent||'');
});
if(!table) return null;
var heads=Array.from(table.querySelectorAll('thead th'));
var idx=heads.findIndex(function(th){ return /YOU(?:'|’)?RE VIEWING/i.test(th.textContent||''); });
if(idx<0) idx=1;
return {table:table,index:idx,head:heads[idx]||null};
}
function compareValue(label){
var cc=currentCompareColumn();
if(!cc) return null;
var rows=Array.from(cc.table.querySelectorAll('tbody tr'));
var row=rows.find(function(tr){
var first=tr.querySelector('th,td');
return first && norm(first.textContent).toLowerCase()===label.toLowerCase();
});
if(!row) return null;
var cells=Array.from(row.children);
return cells[cc.index] ? norm(cells[cc.index].textContent) : null;
}
function removeClothing(){
Array.from(document.querySelectorAll('.hs-main *, main *, article *')).forEach(function(el){
if(el.children.length===0 && norm(el.textContent).toUpperCase()==='CLOTHING') el.remove();
});
}
function fixBuyLink(){
Array.from(document.querySelectorAll('tr')).forEach(function(tr){
var cells=Array.from(tr.children);
if(!cells.length) return;
if(norm(cells[0].textContent).toLowerCase()!=='buy link') return;
var target=cells[1];
if(!target) return;
var a=target.querySelector('a');
if(a){
a.textContent='Visit Website';
a.setAttribute('aria-label','Visit Website');
}else if(target.textContent){
target.textContent='Visit Website';
}
});
}
function moveSave(){
var contacts=document.querySelector('nav.htt-brand-contacts');
var btn=document.querySelector('.hs-cta .simplefavorite-button, button.simplefavorite-button');
if(!contacts||!btn) return;
if(btn.parentElement!==contacts) contacts.appendChild(btn);
btn.classList.add('htt-save-brand');
btn.style.display='inline-flex';
btn.style.visibility='visible';
btn.style.opacity='1';
var sync=function(){ btn.textContent=btn.classList.contains('active')?'Saved':'Save this brand'; };
sync();
if(!btn.dataset.httLiveObserved){
btn.dataset.httLiveObserved='1';
new MutationObserver(sync).observe(btn,{attributes:true,attributeFilter:['class']});
}
}
function addComposition(){
var score=Array.from(document.querySelectorAll('.hs-band.hs-two, .hs-band')).find(function(el){
return /THRONE SCORE/i.test(el.textContent||'') && /\/5/.test(el.textContent||'');
});
if(!score) return;
var existing=document.querySelector('.htt-composition-visual, .htt-composition-visual-live');
if(existing){
if(existing.parentElement!==score) score.appendChild(existing);
existing.classList.add('htt-composition-visual-live');
return;
}
var plant=num(compareValue('Plant fibre'));
var synth=num(compareValue('Synthetic fibre'));
var animal=num(compareValue('Animal fibre'));
var semi=num(compareValue('Semi-synthetic'));
var total=plant+synth+animal+semi;
if(total<=0) return;
var box=document.createElement('section');
box.className='htt-composition-visual-live';
box.innerHTML=
'
';
score.appendChild(box);
}
function addCompareImage(){
var cc=currentCompareColumn();
if(!cc||!cc.head||cc.head.querySelector('.htt-compare-brand-image-live')) return;
var meta=document.querySelector('meta[property="og:image"],meta[name="twitter:image"]');
var src=meta && meta.content ? meta.content : '';
if(!src) return;
var bhead=cc.head.querySelector('.bhead')||cc.head;
var img=document.createElement('img');
img.className='htt-compare-brand-image-live';
img.src=src;
img.alt=(document.querySelector('h1')?norm(document.querySelector('h1').textContent):'Brand');
bhead.insertBefore(img,bhead.firstChild);
}
function relabelStandard(){
var cc=currentCompareColumn();
if(!cc) return;
Array.from(cc.table.querySelectorAll('tbody tr')).forEach(function(tr){
var cell=tr.querySelector('th,td');
if(!cell||norm(cell.textContent).toLowerCase()!=='throne score'||cell.querySelector('.htt-standard-label-live')) return;
var icon=document.querySelector('link[rel~="icon"]');
var span=document.createElement('span');
span.className='htt-standard-label-live';
if(icon&&icon.href){
var img=document.createElement('img');
img.src=icon.href; img.alt='Hold The Throne';
span.appendChild(img);
}
var tx=document.createElement('span');
tx.textContent='Throne Standard';
span.appendChild(tx);
cell.textContent='';
cell.appendChild(span);
});
}
function addAllCompareImages(){
var table=document.querySelector('table.htt-kent-ac');
if(!table) return;
var map={
'PACT':'https://holdthethrone.com/wp-content/uploads/2025/07/Pact.jpg',
'GYMSHARK':'https://holdthethrone.com/wp-content/uploads/2026/07/gymshark-logo.avif',
'EVERLANE':'https://holdthethrone.com/wp-content/uploads/2026/06/Everlane-Clothing-review-scaled.jpg'
};
Array.from(table.querySelectorAll('thead th')).forEach(function(th){
var label=norm(th.textContent).toUpperCase();
var key=Object.keys(map).find(function(k){ return label.indexOf(k)!==-1; });
if(!key || th.querySelector('.htt-compare-brand-image-live')) return;
var head=th.querySelector('.bhead')||th;
var img=document.createElement('img');
img.className='htt-compare-brand-image-live';
img.src=map[key];
img.alt=key.charAt(0)+key.slice(1).toLowerCase();
head.insertBefore(img,head.firstChild);
});
}
function removePriceColumn(){
var table=document.querySelector('table.htt-sku-results');
if(!table) return;
var heads=Array.from(table.querySelectorAll('thead th'));
var idx=heads.findIndex(function(th){ return norm(th.textContent).toLowerCase()==='recorded price'; });
if(idx<0) return;
Array.from(table.querySelectorAll('tr')).forEach(function(tr){
if(tr.children[idx]) tr.children[idx].remove();
});
Array.from(document.querySelectorAll('p')).forEach(function(p){
if(/^Prices are recorded observations/i.test(norm(p.textContent))) p.remove();
});
}
function apply(){
removeClothing();
fixBuyLink();
moveSave();
addComposition();
removePriceColumn();
addCompareImage();
addAllCompareImages();
relabelStandard();
}
var style=document.createElement('style');
style.id='htt-clothes-live-annotation-style-20261006';
style.textContent=
'.htt-composition-visual-live{margin:24px 0 0;padding:20px 0 0;border:0;border-top:1px solid rgba(255,255,255,.35);background:transparent;color:inherit}'+
'.htt-comp-eyebrow{font:700 12px/1.2 Jost,system-ui,sans-serif;letter-spacing:.16em;text-transform:uppercase;margin:0 0 12px}'+
'.htt-comp-bar{display:flex;width:100%;height:24px;overflow:hidden;border-radius:999px;background:#f3efe8;border:2px solid #ffffff;box-sizing:border-box;box-shadow:inset 0 0 0 1px rgba(43,58,92,.18)}'+
'.htt-comp-bar span{display:block;height:100%}.htt-comp-plant{background:#0f5138;border-right:1px solid rgba(255,255,255,.75)}.htt-comp-animal{background:#8a6547;border-right:1px solid rgba(255,255,255,.75)}.htt-comp-synth{background:#9e3028;border-right:1px solid rgba(255,255,255,.75)}.htt-comp-semi{background:#c89432}.htt-composition-visual-live .htt-comp-eyebrow,.htt-composition-visual-live .htt-comp-legend{color:#fff}.htt-composition-visual__bar,.htt-composition-visual-live .htt-composition-visual__bar{border:2px solid #fff!important;box-shadow:0 0 0 1px rgba(43,58,92,.45),inset 0 0 0 1px rgba(255,255,255,.35)!important;border-radius:0!important;overflow:hidden!important}'+
'.htt-comp-legend{display:flex;flex-wrap:wrap;gap:10px 22px;margin-top:12px;font:500 14px/1.4 Jost,system-ui,sans-serif}'+
'.htt-brand-contacts .htt-save-brand{display:inline-flex!important;visibility:visible!important;opacity:1!important;align-items:center;justify-content:center;min-height:46px;padding:0 20px!important;border:1px solid #2b3a5c!important;background:#2b3a5c!important;color:#fff!important;font:700 14px/1 Jost,system-ui,sans-serif!important;letter-spacing:.04em;text-transform:uppercase;cursor:pointer}'+
'.htt-brand-contacts .htt-save-brand.active{background:#24714f!important;border-color:#24714f!important}'+
'.htt-compare-brand-image-live{display:block;width:76px;height:76px;object-fit:cover;border-radius:50%;margin:0 auto 10px;border:1px solid #d8d5ce}'+
'.htt-standard-label-live{display:flex;align-items:center;gap:9px;font-weight:700}.htt-standard-label-live img{width:28px;height:28px;object-fit:contain;border-radius:50%}.htt-kent-compare-restore{padding:44px 32px 36px!important;box-sizing:border-box}.htt-kent-compare-restore .htt-kent-cscroll{margin-left:0;margin-right:0}.htt-kent-compare-restore .htt-kent-cmpbar{margin-left:0;margin-right:0}.htt-compare-brand-image-live{display:block;width:88px;height:88px;object-fit:cover;margin:0 auto 10px;border:1px solid #d8d5ce;border-radius:0}@media(max-width:700px){.htt-kent-compare-restore{padding:32px 18px 28px!important}}';
(document.head||document.documentElement).appendChild(style);
var queued=false;
function queue(){
if(queued) return;
queued=true;
requestAnimationFrame(function(){ queued=false; apply(); });
}
if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',apply,{once:true}); else apply();
var mo=new MutationObserver(queue);
mo.observe(document.documentElement,{childList:true,subtree:true});
setTimeout(apply,250);
setTimeout(apply,1000);
setTimeout(apply,2500);
})();
.htt-qa{margin:28px 0;border:1px solid #D7D5CF;background:#F7F6F2;color:#2B3A5C}
.htt-qa *{box-sizing:border-box;border-radius:0}
.htt-qa-head{padding:24px 28px;border-bottom:1px solid #D7D5CF}
.htt-qa-kicker{font:700 11px/1.2 Jost,system-ui,sans-serif;letter-spacing:.18em;text-transform:uppercase;color:#5C6883;margin-bottom:8px}
.htt-qa h2{font:400 clamp(24px,3vw,34px)/1.1 Aboreto,serif;margin:0;color:#2B3A5C}
.htt-qa-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-top:0}
.htt-qa-item{padding:18px 20px;border-right:1px solid #D7D5CF;border-bottom:1px solid #D7D5CF;min-height:105px}
.htt-qa-item:nth-child(4n){border-right:0}
.htt-qa-label{font:700 10px/1.2 Jost,system-ui,sans-serif;letter-spacing:.13em;text-transform:uppercase;color:#5C6883;margin-bottom:8px}
.htt-qa-value{font:600 17px/1.35 Jost,system-ui,sans-serif}
.htt-qa-value small{display:block;font-size:12px;font-weight:500;line-height:1.45;color:#5C6883;margin-top:6px}
.htt-qa-score{font:400 32px/1 Aboreto,serif}
.htt-qa-sections{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid #D7D5CF}
.htt-qa-section{padding:22px 28px;border-right:1px solid #D7D5CF}
.htt-qa-section:last-child{border-right:0}
.htt-qa-section h3{font:700 11px/1.2 Jost,system-ui,sans-serif;letter-spacing:.16em;text-transform:uppercase;margin:0 0 14px;color:#2B3A5C}
.htt-qa-evidence{padding:11px 0;border-top:1px solid #E4E2DC;font-size:13px;line-height:1.55}
.htt-qa-evidence:first-of-type{border-top:0;padding-top:0}
.htt-qa-scope{display:inline-block;font-size:9px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;border:1px solid #2B3A5C;padding:3px 6px;margin:0 6px 5px 0}
.htt-qa-status{font-weight:700}
.htt-qa-alt{display:flex;gap:14px;align-items:center;text-decoration:none;color:inherit}
.htt-qa-alt img{width:72px;height:72px;object-fit:cover;border:1px solid #D7D5CF}
.htt-qa-alt b{display:block;font-size:15px}
.htt-qa-empty{font-size:13px;color:#5C6883}
.htt-sku-result-tag{display:block;font-size:9px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#5C6883;margin-bottom:6px}
.htt-sku-why{display:block;font-size:11px;line-height:1.45;color:#5C6883;margin-top:8px}
@media(max-width:900px){.htt-qa-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.htt-qa-item:nth-child(4n){border-right:1px solid #D7D5CF}.htt-qa-item:nth-child(2n){border-right:0}}
@media(max-width:640px){.htt-qa-grid,.htt-qa-sections{grid-template-columns:1fr}.htt-qa-item,.htt-qa-item:nth-child(2n),.htt-qa-item:nth-child(4n),.htt-qa-section{border-right:0}.htt-qa-head,.htt-qa-section{padding-left:18px;padding-right:18px}}
(function(){
var allowed=/\bsingle-(clothes|body_bath|cocoa|food|electronics|case|bedding|beauty|femcare|kids|toys|homeware|pet|candles|supplements|household|nappies|jewellery|vehicle)\b/;
if(!allowed.test(document.body.className||'')) return;
function norm(s){return String(s||'').replace(/\s+/g,' ').trim();}
function valByLabel(labels){
labels=labels.map(function(x){return x.toLowerCase()});
var rows=Array.from(document.querySelectorAll('tr'));
for(var i=0;i<rows.length;i++){
var cells=Array.from(rows[i].children);
if(cells.length<2) continue;
var lab=norm(cells[0].textContent).toLowerCase();
if(labels.indexOf(lab)!==-1) return norm(cells[1].textContent);
}
return '';
}
function jsonByLabel(labels){
var s=valByLabel(labels);
if(!s) return [];
try{return JSON.parse(s)}catch(e){return []}
}
function firstText(selectors){
for(var i=0;i<selectors.length;i++){
var el=document.querySelector(selectors[i]);
if(el&&norm(el.textContent)) return norm(el.textContent);
}
return '';
}
function scoreCardText(){
var cards=Array.from(document.querySelectorAll('.hs-band,.hs-two'));
var c=cards.find(function(el){return /THRONE SCORE/i.test(el.textContent||'')&&/\d\s*\/\s*5/.test(el.textContent||'')});
return c?norm(c.textContent):'';
}
function parseScore(){
var t=scoreCardText();
var m=t.match(/(\d(?:\.\d+)?)\s*\/\s*5/);
return m?m[1]+'/5':'Not assessed';
}
function parseVerdict(){
var t=scoreCardText();
var m=t.match(/\d(?:\.\d+)?\s*\/\s*5\s*(.+?)(?:\d{1,3}(?:\.\d+)?%\s*disclosure|This is not|$)/i);
return m?norm(m[1]):'';
}
function e(s){var d=document.createElement('div');d.textContent=String(s==null?'':s);return d.innerHTML;}
function fmtPrice(v,c){
if(!v||v==='0'||v==='0.00') return '';
return (c?c+' ':'')+v;
}
var isPact=false/* 25 Oct 2026: hard-coded pre-2.2 Pact score and Kent alternative disabled */;
var title=firstText(['.hs-main h1','h1'])||document.title.split('|')[0].trim();
var score=parseScore();
var verdict=parseVerdict();
var products=valByLabel(['Products assessed','Products scanned','Total styles scanned','SKU count','Products found'])||'Not available';
var plant=valByLabel(['Plant fibre','Plant fibre percent','Plant percent'])||'';
var synthetic=valByLabel(['Synthetic fibre','Synthetic percent'])||'';
var priceAvg=valByLabel(['Average price']);
var priceMedian=valByLabel(['Median price']);
var priceMin=valByLabel(['Minimum price']);
var priceMax=valByLabel(['Maximum price']);
var currency=valByLabel(['Price currency']);
var parent=valByLabel(['Parent company'])||valByLabel(['Ownership'])||'Unknown';
var made=valByLabel(['Assembled in','Made in','Where manufactured','Factory: city + country'])||'Unknown';
var checked=valByLabel(['Last checked','Price last checked','SKU scan date','Scan date'])||'Not available';
var certs=jsonByLabel(['Scoped Certification Evidence JSON']);
var claims=jsonByLabel(['Claims vs Evidence JSON']);
var manufacturing=jsonByLabel(['HTT Manufacturing Records JSON']);
if(isPact){
score='';
verdict='Moderate verified plant evidence · current saved result is partial-scan qualified';
products='217';
plant='60.5%';
synthetic='35.9%';
parent='Revelry Brands';
made='Primarily India; selected socks/towel lines noted as Turkey';
checked='4 Oct 2026';
certs=[
{certification:'GOTS',scope:'MATERIAL / SUPPLY CHAIN',verification_status:'Brand claim only; registry not confirmed in HTT record',notes:'Pact states it uses GOTS-certified organic cotton. HTT does not treat Pact itself as GOTS-certified.'},
{certification:'Fair Trade Certified',scope:'FACTORY',verification_status:'Brand claim only; factory certificate not stored',notes:'Pact states its cut-and-sew factories are Fair Trade Certified. Current factory names and certificate IDs are not stored.'},
{certification:'B Corp',scope:'BRAND',verification_status:'Historic / lapsed in stored HTT research',notes:'Stored HTT research says Pact no longer appears in the B Corp directory.'}
];
claims=[
{claim:'Pact uses GOTS-certified organic cotton.',scope:'MATERIAL / SUPPLY CHAIN',status:'Partially supported / not independently verified',htt_result:'Supported as a brand-stated material/supply-chain claim; not evidence that Pact the company is GOTS-certified.'},
{claim:'Pact manufactures in Fair Trade Certified factories.',scope:'FACTORY',status:'Brand claim only / registry not checked',htt_result:'Factory-scope claim only. Do not present this as a Pact brand certification.'}
];
manufacturing=[
{country:'India',relationship:'Primary cut-and-sew manufacturing; organic-cotton supply chain',evidence_status:'Country-level and brand-claim evidence only; specific current factory names/certificate IDs are not stored.'},
{country:'Turkey',relationship:'Selected socks and towel lines noted in existing HTT research',evidence_status:'Exact current supplier/factory is not stored.'}
];
}
if(document.querySelector('.htt-qa')) return;
var price='Not available';
var priceNote='No canonical SKU price data stored';
if(priceAvg||priceMedian||priceMin||priceMax){
var bits=[];
if(priceAvg) bits.push('Avg '+fmtPrice(priceAvg,currency));
if(priceMedian) bits.push('Median '+fmtPrice(priceMedian,currency));
if(priceMin||priceMax) bits.push('Range '+fmtPrice(priceMin,currency)+(priceMax?'–'+fmtPrice(priceMax,currency):''));
price=bits.join(' · ');
priceNote='';
}
var certHtml=certs.length?certs.map(function(c){
return '
'+e(c.scope||'Scope unknown')+''+e(c.certification||'Certification')+' '+e(c.verification_status||'Status not recorded')+''+(c.notes?' '+e(c.notes):'')+'
';
}).join(''):'
No scoped certification record is stored yet.
';
var claimHtml=claims.length?claims.map(function(c){
return '
'+e(c.scope||'Scope unknown')+''+e(c.claim||'Claim')+' '+e(c.status||'Status not recorded')+''+(c.htt_result?' '+e(c.htt_result):'')+'
';
}).join(''):'
No structured claims check is stored yet.
';
var manufHtml=manufacturing.length?manufacturing.map(function(m){
var name=m.factory_name||m.manufacturer_name||m.country||'Manufacturing record';
return '