@font-face{font-family:"Atkinson Hyperlegible Next";src:url(/assets/fonts/atkinson.woff2) format("woff2");font-weight:200 800;font-display:swap}
@font-face{font-family:"Archivo";src:url(/assets/fonts/archivo.woff2) format("woff2");font-weight:100 900;font-display:swap}
@font-face{font-family:"IBM Plex Mono";src:url(/assets/fonts/plexmono-400.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"IBM Plex Mono";src:url(/assets/fonts/plexmono-500.woff2) format("woff2");font-weight:500;font-display:swap}

/* Bone paper and ink, with Okabe-Ito accents (colour-blind safe). Colour is never the only signal. */
:root{color-scheme:light;--bg:#F3EDE1;--panel:#E9E0CE;--ink:#191611;--ink2:#433B30;--rule:#191611;--gold:#E69F00;--gold-ink:#8A5F12;--brick:#A23B22;--yellow:#F0E442;
 --fs:1.125rem;--lh:1.6;--ls:0;--ws:0;--body:"Atkinson Hyperlegible Next",Verdana,Tahoma,sans-serif;--head:"Archivo","Arial Narrow",Arial,sans-serif;--mono:"IBM Plex Mono",Menlo,Consolas,monospace}
[data-size=l]{--fs:1.25rem}[data-size=xl]{--fs:1.4rem}
[data-space=wide]{--lh:1.85;--ls:.035em;--ws:.14em}
[data-bg=blue]{--bg:#E2EBF1;--panel:#D2DEE7}[data-bg=grey]{--bg:#E7E6E2;--panel:#D9D7D0}
[data-bg=dark]{color-scheme:dark;--bg:#1B1915;--panel:#27241E;--ink:#F0E9DB;--ink2:#D3CAB9;--rule:#F0E9DB;--gold-ink:#E3B35A;--brick:#E8866B}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--body);font-size:var(--fs);line-height:var(--lh);letter-spacing:var(--ls);word-spacing:var(--ws);
 background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .06 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
 padding-bottom:env(safe-area-inset-bottom,0px)}
[data-bg=dark] body{background-image:none}
a{color:var(--ink);text-decoration-thickness:2px;text-underline-offset:.2em;text-decoration-color:var(--brick)}
a:hover{text-decoration-color:currentColor}
:focus-visible{outline:3px solid var(--brick);outline-offset:3px}
::selection{background:var(--yellow);color:#191611}
h1,h2,h3{font-family:var(--head);line-height:1.12;letter-spacing:-.015em;margin:0 0 .6rem}
h1{font-weight:800;font-size:clamp(2.1rem,6.5vw,3.9rem)}
h2{font-weight:800;font-size:clamp(1.4rem,3.6vw,2rem)}
h3{font-weight:700;font-size:1.2em;margin-top:1.4rem}
p{margin:0 0 1rem;max-width:42rem}
ul{padding-left:1.2rem;max-width:42rem}li{margin-bottom:.4rem}
kbd{font-family:var(--mono);font-size:.85em;border:1.5px solid var(--ink2);padding:0 .3rem}
cite{font-style:normal;font-weight:700}
.wrap{max-width:64rem;margin:0 auto;padding:0 1.25rem}
.narrow{max-width:46rem;padding-top:2rem;padding-bottom:2rem}
.skip{position:absolute;left:-999px;top:0;background:var(--ink);color:var(--bg);padding:.6rem 1rem;z-index:30}.skip:focus{left:0}
.small{font-size:.9em;color:var(--ink2)}
.label{display:block;font-family:var(--mono);font-size:.85em;color:var(--ink2);margin-bottom:.3rem}
.lead{font-size:1.12em;max-width:42rem}
.n-short{display:none}
@media (max-width:34rem){.n-long{display:none}.n-short{display:inline}}

/* strip + header */
.strip{display:block;margin:0;max-width:none;background:var(--yellow);color:#191611;font-size:.88em;padding:.45rem 1.25rem;text-align:center}
.strip a{color:#191611;font-weight:700;text-decoration-color:#191611}
.top{border-bottom:3px solid var(--rule);position:relative;z-index:40;background:var(--bg)}
.top-in{display:flex;align-items:center;gap:.8rem;min-height:64px}
.mark{font-family:var(--head);font-weight:800;font-size:clamp(.95rem,4.2vw,1.15rem);text-decoration:none;line-height:1.1;white-space:nowrap;margin-right:auto}
.mark-b{border-bottom:5px solid var(--gold)}
.acts-top{display:flex;gap:.4rem;align-items:center}
.icon-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:.3rem;min-width:44px;min-height:44px;padding:0 .55rem;font:inherit;color:var(--ink);background:none;border:2px solid var(--ink);text-decoration:none;cursor:pointer}
.icon-btn:hover{background:var(--ink);color:var(--bg)}
.read-btn span{font-family:var(--head);font-weight:800;font-size:1.05rem}
.badge{font-family:var(--mono);font-size:.8rem;font-weight:500}
[data-tip]:focus-visible::after{content:attr(data-tip);position:absolute;top:calc(100% + 6px);right:0;background:var(--ink);color:var(--bg);padding:.25rem .55rem;font-size:.8rem;font-family:var(--body);font-weight:400;white-space:nowrap;z-index:60;pointer-events:none}
@media (hover:hover){[data-tip]:hover::after{content:attr(data-tip);position:absolute;top:calc(100% + 6px);right:0;background:var(--ink);color:var(--bg);padding:.25rem .55rem;font-size:.8rem;font-family:var(--body);font-weight:400;white-space:nowrap;z-index:60;pointer-events:none}}
/* menu: grouped, with submenus. Phones get a panel; desktops get dropdowns that open on hover, tap or keyboard */
.menu{list-style:none;margin:0;padding:0;max-width:none}
.menu li{margin:0}
.root{font-weight:700;text-decoration:none}
.root[aria-current]{text-decoration:underline;text-decoration-color:var(--gold);text-decoration-thickness:4px}
.sub ul{list-style:none;margin:0;padding:0;max-width:none}
.sub a{display:flex;align-items:center;min-height:40px;text-decoration:none}
.sub a:hover{text-decoration:underline;text-decoration-color:var(--brick)}
.sub-h{font-family:var(--mono);font-size:.78rem;color:var(--ink2);margin:.6rem 0 .1rem}
@media (max-width:59.99rem){
 .nav{display:none;position:absolute;left:0;right:0;top:100%;background:var(--bg);border-bottom:3px solid var(--rule);max-height:calc(100dvh - 120px);overflow-y:auto;padding:.5rem 1.25rem 1.2rem;box-shadow:0 12px 24px rgba(25,22,17,.12)}
 .nav.open{display:block}
 .grp{border-top:1px solid var(--rule);padding:.5rem 0}
 .root{display:flex;align-items:center;min-height:44px;font-family:var(--head);font-size:1.15rem}
 .sub-btn{display:none}
 .sub{padding-left:.2rem}
 .sub ul{columns:2;column-gap:1.2rem}
}
@media (min-width:60rem){
 .menu-btn{display:none}
 .menu{display:flex;gap:.2rem}
 .grp{position:relative;display:flex;align-items:center}
 .root{display:flex;align-items:center;min-height:44px;padding:0 .15rem 0 .5rem}
 .sub-btn{width:28px;min-height:44px;background:none;border:0;color:var(--ink);cursor:pointer;display:flex;align-items:center;justify-content:center}
 .sub-btn::before{content:"";width:7px;height:7px;border-right:2px solid;border-bottom:2px solid;transform:translateY(-2px) rotate(45deg)}
 .sub-btn[aria-expanded=true]::before{transform:translateY(2px) rotate(-135deg)}
 .sub{display:none;position:absolute;top:100%;left:0;min-width:15rem;background:var(--bg);border:2px solid var(--ink);padding:.4rem 1rem .7rem;box-shadow:6px 6px 0 var(--ink);z-index:50}
 .grp:first-child .sub{min-width:30rem;columns:2;column-gap:1.5rem}
 .grp:first-child .sub ul{break-inside:avoid}
 .sub-btn[aria-expanded=true]+.sub{display:block}
}
@media (min-width:60rem) and (hover:hover){.grp:hover .sub{display:block}}

/* bands (page headers) */
.band{background:var(--c);color:var(--f);border-bottom:3px solid var(--rule);padding:1.6rem 0 1.2rem}
.band a{color:var(--f);text-decoration-color:currentColor}
.band h1{font-size:clamp(1.8rem,5vw,2.7rem);max-width:26ch}
.band .lead{margin:0}
.crumbs{font-family:var(--mono);font-size:.85em;margin:0 0 .5rem}
.code{display:inline-block;font-family:var(--mono);font-weight:500;font-size:.62em;letter-spacing:.02em;line-height:1;padding:.28em .4em;vertical-align:.25em;background:var(--c,var(--ink));color:var(--f,var(--bg));border:2px solid #191611}
.band .code{border-color:currentColor;background:transparent;color:inherit}

/* home hero + search */
.hero{padding:2.2rem 0 1.2rem}
.hero h1{display:inline-block;border-bottom:8px solid var(--gold);padding-bottom:.15rem;margin-bottom:1rem}
.search{max-width:44rem;margin-top:1rem}
.kbd-hint{margin-left:.5rem}
.search-row{display:flex;gap:.5rem;flex-wrap:wrap}
.search-row input{flex:1 1 16rem}
input[type=search],input[type=text],input[type=email],select,textarea{width:100%;font:inherit;color:var(--ink);background:var(--bg);border:2px solid var(--ink);padding:.7rem .8rem;min-height:50px;border-radius:0}
input::placeholder{color:var(--ink2);opacity:.85}
select{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9'%3E%3Cpath d='M1 1l6 6 6-6' stroke='%23191611' stroke-width='2' fill='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .9rem center;padding-right:2.4rem}
[data-bg=dark] select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9'%3E%3Cpath d='M1 1l6 6 6-6' stroke='%23F0E9DB' stroke-width='2' fill='none'/%3E%3C/svg%3E")}
textarea{resize:vertical;min-height:8rem}
.results{list-style:none;padding:0;margin:.5rem 0 0;max-width:44rem}
.results li{border-bottom:1px solid var(--rule);margin:0}
.results a{display:flex;gap:.6rem;align-items:baseline;padding:.6rem 0;text-decoration:none}
.results a:hover .r-n{text-decoration:underline;text-decoration-color:var(--brick)}
.r-w{margin-left:auto;font-family:var(--mono);font-size:.78em;color:var(--ink2);text-align:right}

/* buttons */
.btn{display:inline-flex;align-items:center;font:inherit;font-weight:700;background:var(--ink);color:var(--bg);border:2px solid var(--ink);padding:.6rem 1.1rem;min-height:50px;text-decoration:none;cursor:pointer;border-radius:0}
.btn:hover{background:var(--bg);color:var(--ink)}
.btn-alt{background:var(--yellow);color:#191611;border-color:#191611}.btn-alt:hover{background:#191611;color:var(--yellow)}
.btn-wa{background:#009E73;color:#191611;border-color:#191611}.btn-wa:hover{background:#191611;color:#fff}

/* directory tiles */
.t-group{margin-top:1.1rem}
.t-group-h{font-family:var(--mono);font-weight:500;font-size:.85rem;letter-spacing:0;color:var(--ink2);margin:0 0 .4rem}
.tiles{list-style:none;padding:0;margin:0;max-width:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}
.tiles li{margin:0}
.tiles a{display:grid;grid-template-columns:1fr auto;grid-template-rows:auto 1fr auto;height:100%;min-height:8.5rem;padding:.8rem .85rem;background:var(--c);color:var(--f);text-decoration:none;border:2px solid #191611}
.tiles a:hover{box-shadow:5px 5px 0 #191611;transform:translate(-2px,-2px)}
.t-code{font-family:var(--mono);font-weight:500;font-size:.8em;border:1.5px solid currentColor;padding:0 .3rem;justify-self:start;align-self:start}
.t-count{font-family:var(--mono);font-weight:500;font-size:.95em}
.t-name{grid-column:1 / -1;align-self:end;font-family:var(--head);font-weight:800;font-size:clamp(1.15rem,3.6vw,1.6rem);line-height:1.05;margin-top:.8rem}
.t-desc{grid-column:1 / -1;font-size:.85em;line-height:1.35;margin-top:.3rem}
.t-join a{background:var(--bg);color:var(--ink);border:3px dashed var(--ink)}
.c-services.tiles-hatch,.tiles a.c-services,.band.c-services{background-image:repeating-linear-gradient(135deg,transparent 0 9px,rgba(25,22,17,.16) 9px 11px)}
.tiles-sm a{min-height:5.5rem}.tiles-sm .t-name{font-size:1.05rem}
@media (min-width:44rem){.tiles{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media (min-width:60rem){.tiles-sm{grid-template-columns:repeat(5,minmax(0,1fr))}}

/* home sections */
.block{margin-top:2.5rem}
.sec-h{padding-top:.9rem;border-top:3px solid var(--rule)}
.sec-h .sub{font-family:var(--mono);font-weight:400;font-size:.5em;letter-spacing:0;color:var(--ink2);margin-left:.4rem;vertical-align:middle}
.picks,.colls,.zones,.about-links,.saved-list{list-style:none;padding:0;margin:0;max-width:none}
.picks{display:grid;gap:0 1.5rem;grid-template-columns:1fr}
.picks li{margin:0;border-bottom:1px solid var(--rule)}
.picks a{display:grid;grid-template-columns:auto 1fr;gap:.1rem .6rem;padding:.75rem 0;text-decoration:none}
.picks .code{font-size:.72em;align-self:start;margin-top:.2rem}
.p-name{font-family:var(--head);font-weight:700;font-size:1.08em}
.p-desc{grid-column:2;font-size:.9em;color:var(--ink2)}
.picks a:hover .p-name{text-decoration:underline;text-decoration-color:var(--brick)}
@media (min-width:44rem){.picks{grid-template-columns:1fr 1fr}}
.colls{display:grid;gap:.6rem;grid-template-columns:1fr}
.colls li{margin:0}
.colls a{display:grid;grid-template-columns:1fr auto;gap:.1rem 1rem;padding:.8rem .9rem;border:2px solid var(--ink);border-top:10px solid var(--c);text-decoration:none;height:100%}
.colls a:hover{background:var(--panel)}
.c-name{font-family:var(--head);font-weight:800;font-size:1.15em}.c-count{font-family:var(--mono)}
.c-desc{grid-column:1 / -1;font-size:.9em;color:var(--ink2)}
@media (min-width:44rem){.colls{grid-template-columns:1fr 1fr}}@media (min-width:60rem){.colls{grid-template-columns:1fr 1fr 1fr}}
.zones{display:flex;flex-wrap:wrap;gap:.5rem}
.zones li{margin:0}
.zones a{display:inline-flex;gap:.5rem;align-items:center;min-height:46px;padding:.3rem .8rem;border:2px solid var(--ink);text-decoration:none;font-weight:700}
.zones a:hover{background:var(--ink);color:var(--bg)}
.count{font-family:var(--mono);font-weight:500;font-size:.8em;color:var(--ink2)}
.zones a:hover .count{color:inherit}
.about-strip{background:var(--panel);padding:0 1.1rem 1rem;border:2px solid var(--ink)}
.about-strip .sec-h{border-top:0}
.about-links{display:flex;flex-wrap:wrap;gap:.3rem 1.2rem}.about-links li{margin:0}.about-links a{display:inline-flex;min-height:44px;align-items:center;font-weight:700}

/* directory tools + listings */
.jump{font-size:.95em;max-width:none;margin-top:1rem}.jump .label{display:inline}
.tools{padding:1rem 0 .2rem}
.tools input[type=search]{max-width:40rem}
.chips{display:flex;flex-wrap:nowrap;overflow-x:auto;gap:.4rem;margin-top:.6rem;padding-bottom:.4rem;scrollbar-width:thin}
.chip{flex:0 0 auto;font:inherit;font-size:.9em;background:var(--bg);color:var(--ink);border:2px solid var(--ink);padding:.3rem .65rem;min-height:42px;cursor:pointer;border-radius:0}
.chip span{font-family:var(--mono);font-size:.85em;margin-left:.2rem}
.chip[aria-pressed=true]{background:var(--ink);color:var(--bg)}
.chip[aria-pressed=true]::before{content:"\2713\00a0"}
@media (min-width:52rem){.chips{flex-wrap:wrap;overflow:visible}}
.tool-row{display:flex;flex-wrap:wrap;gap:.2rem 1.2rem;align-items:center;margin-top:.3rem}.tool-row p{margin:0}
.status{font-family:var(--mono);font-size:.85em;color:var(--ink2)}
.linkbtn{font:inherit;font-size:.9em;background:none;border:0;padding:.3rem 0;color:var(--ink);text-decoration:underline;text-decoration-color:var(--brick);text-decoration-thickness:2px;text-underline-offset:.2em;cursor:pointer;min-height:42px}
.cat{margin-top:2rem}
.cat h2{font-size:clamp(1.25rem,3.2vw,1.7rem);border-top:3px solid var(--rule);padding-top:.8rem}
.cat h2 .code{font-size:.55em}
.item{border-bottom:1px solid var(--rule);scroll-margin-top:1rem}
.item summary{list-style:none;cursor:pointer;display:grid;gap:.1rem;padding:.8rem 2.4rem .8rem .1rem;position:relative;min-height:48px}
.item summary::-webkit-details-marker{display:none}
.item summary::after{content:"+";position:absolute;right:.4rem;top:.65rem;font-family:var(--mono);font-size:1.4em;line-height:1}
.item[open] summary::after{content:"\2212"}
.item summary:hover{background:var(--panel)}
summary:focus-visible{outline:3px solid var(--brick);outline-offset:-3px}
.i-name{font-family:var(--head);font-weight:700;font-size:1.12em;line-height:1.25}
.i-name .code{font-size:.62em;margin-right:.2rem}
.i-type{font-size:.9em;color:var(--ink2)}
.i-meta{font-family:var(--mono);font-size:.78em;color:var(--ink2);display:flex;flex-wrap:wrap;align-items:center;gap:.2rem .5rem;margin-top:.15rem}
.own{border:1.5px solid var(--ink2);padding:0 .35rem;color:var(--ink);line-height:1.5}
.own-corporate{border-color:var(--brick);color:var(--brick)}
.own-unconfirmed{border-style:dashed}
.tag-closed,.tag-new{font-family:var(--mono);font-size:.68em;font-weight:500;padding:0 .35rem;margin-left:.4rem;vertical-align:middle;border:2px solid}
.tag-closed{border-color:var(--brick);color:var(--brick)}
.tag-new{background:var(--yellow);color:#191611;border-color:#191611}
.i-body{padding:.2rem .1rem 1.1rem;max-width:46rem}
.i-body dl{margin:.4rem 0 .8rem}
.i-body dl div{display:grid;grid-template-columns:5.5rem 1fr;gap:.6rem;padding:.25rem 0;border-top:1px dashed var(--ink2)}
.i-body dt{font-family:var(--mono);font-size:.82em;color:var(--ink2);padding-top:.15rem}
.i-body dd{margin:0}
.links{display:flex;flex-wrap:wrap;gap:.2rem 1.1rem;max-width:none}
.links a{display:inline-flex;align-items:center;min-height:40px}
.unc{font-family:var(--mono);font-size:.78em;color:var(--ink2);margin-left:.3rem}
.acts{display:flex;gap:.5rem;flex-wrap:wrap;margin:.2rem 0 0}
.acts button{font:inherit;font-size:.9em;font-weight:700;background:var(--bg);color:var(--ink);border:2px solid var(--ink);padding:.3rem .8rem;min-height:42px;cursor:pointer}
.acts button[aria-pressed=true]{background:var(--yellow);color:#191611;border-color:#191611}
.acts button[aria-pressed=true]::before{content:"\2605\00a0"}
.sponsor{margin:2.5rem 0 1rem;padding:1rem 1.1rem;border:2px solid var(--ink);background:var(--panel);max-width:46rem}.sponsor p{margin:0}
.more{margin-top:2.5rem}.more h2{font-size:1.3rem}
.empty{font-size:1.05em;margin-top:1rem}

/* info pages */
.prose h2{margin-top:2rem;padding-top:.8rem;border-top:2px solid var(--rule)}
.prose ul{list-style:square}.prose li::marker{color:var(--gold-ink)}
.tldr{background:var(--panel);padding:.9rem 1rem;border:2px solid var(--ink)}
.tags{font-size:.95em;line-height:1.9}
.toc{display:flex;flex-wrap:wrap;gap:.3rem 1rem;font-weight:700;margin-bottom:1rem}
.toc a{min-height:40px;display:inline-flex;align-items:center}
.defs div{display:grid;grid-template-columns:minmax(8rem,12rem) 1fr;gap:.8rem;border-top:1px dashed var(--ink2);padding:.4rem 0}
.defs dt{font-weight:700}.defs dd{margin:0}
.report{margin-top:1.5rem;padding:0 1.1rem .4rem;border:2px solid var(--ink);border-top:10px solid var(--gold)}.report h2{border-top:0;margin-top:1rem}.report ul{margin-bottom:.6rem}
.callout{margin-top:2rem;padding:0 1.1rem 1rem;border:3px solid var(--ink);background:var(--panel)}
.callout h2{border-top:0}
.people{display:grid;gap:1.2rem;grid-template-columns:1fr}
.people h3{margin-top:0;border-bottom:4px solid var(--gold);display:inline-block}
@media (min-width:52rem){.people{grid-template-columns:1.2fr 1fr 1fr}}
.press{list-style:none;padding:0}.press li{border-top:1px solid var(--rule);margin:0}
.press a{display:block;padding:.75rem 0;text-decoration:none}.press a:hover{text-decoration:underline;text-decoration-color:var(--brick)}
.p-src{display:block;font-family:var(--mono);font-size:.82em;color:var(--ink2)}
.faq{border-top:1px solid var(--rule)}.faq summary{cursor:pointer;font-weight:700;padding:.75rem 0;min-height:44px}.faq p{margin:0 0 1rem}
.plain-h1{font-size:clamp(1.8rem,5vw,2.6rem)}
.saved-list li{border-bottom:1px solid var(--rule);margin:0;display:flex;align-items:center;gap:.6rem}
.saved-list a{display:flex;gap:.6rem;align-items:baseline;padding:.7rem 0;text-decoration:none;font-weight:700;flex:1}
.saved-list button{font:inherit;font-size:.85em;background:none;border:0;color:var(--ink2);text-decoration:underline;cursor:pointer;min-height:40px}

/* forms */
.form{max-width:36rem;margin-top:1rem;padding:1.1rem;border:2px solid var(--ink);background:var(--bg)}
.form label{display:block;font-weight:700;margin-bottom:.3rem}
.hint{display:block;font-size:.88em;color:var(--ink2);margin-bottom:.3rem}
.hp{position:absolute;left:-9999px}

/* footer, overlays */
.foot{margin-top:4rem;border-top:6px solid var(--rule);padding:2rem 0 3rem;background:var(--panel)}
.foot-big{font-family:var(--head);font-weight:800;font-size:clamp(1.3rem,3.5vw,1.9rem);max-width:24ch;line-height:1.15}
.foot-cols{display:grid;gap:1.2rem;grid-template-columns:1fr;margin:1.5rem 0}
.foot h2{font-size:1rem;margin-bottom:.3rem;font-family:var(--mono);font-weight:500;letter-spacing:0}
.foot a{display:inline-block;padding:.15rem 0}
@media (min-width:44rem){.foot-cols{grid-template-columns:repeat(3,1fr)}}
.foot-end{display:flex;justify-content:space-between;flex-wrap:wrap;gap:.5rem;border-top:1px solid var(--rule);padding-top:1rem;margin-top:1.5rem;max-width:none;font-size:.9em}
.totop{position:fixed;right:1rem;bottom:calc(1rem + env(safe-area-inset-bottom,0px));z-index:20;background:var(--ink);color:var(--bg);text-decoration:none;font-weight:700;font-size:.9em;padding:.6rem .9rem;min-height:44px;border:2px solid var(--ink)}
.toast{position:fixed;left:50%;bottom:1.2rem;transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:.6rem 1rem;font-weight:700;z-index:40}
.reader{border:3px solid var(--ink);background:var(--bg);color:var(--ink);padding:1.2rem 1.3rem;max-width:26rem;width:calc(100% - 2rem)}
.reader::backdrop{background:rgba(20,18,14,.55)}
.reader fieldset{border:0;padding:0;margin:0 0 1rem;display:flex;flex-wrap:wrap;gap:.4rem}
.reader legend{font-weight:700;margin-bottom:.4rem;width:100%}
.reader fieldset button{font:inherit;font-size:.95em;background:var(--bg);color:var(--ink);border:2px solid var(--ink);padding:.35rem .7rem;min-height:44px;cursor:pointer;border-radius:0}
.reader fieldset button[aria-pressed=true]{background:var(--ink);color:var(--bg)}

@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}.tiles a:hover{transform:none}}
@media print{.strip,.top,.tools,.reader,.sponsor,form,.totop,.more{display:none}body{background:none}}

/* modern progressive enhancements */
h1,h2,h3,.t-name{text-wrap:balance}
p,li,dd{text-wrap:pretty}

@media (prefers-reduced-motion:no-preference){@view-transition{navigation:auto}}

/* listings: ownership filter, paid, cross-listed */
.tools .own,.item .own{cursor:pointer}
.chips-own .chip{font-size:.85em;min-height:38px}
.tag-feat{font-family:var(--mono);font-size:.68em;font-weight:500;padding:0 .35rem;margin-left:.4rem;vertical-align:middle;border:2px dashed var(--ink)}
.xref{display:block;padding:.6rem .1rem;margin:0;border-bottom:1px solid var(--rule);max-width:none}
.xref a{font-family:var(--head);font-weight:700}
.xref span{font-size:.9em;color:var(--ink2)}
/* contact list */
.cl-btns{display:flex;flex-wrap:wrap;gap:.5rem}
.saved-list .cl-row{display:grid;grid-template-columns:auto 1fr auto;gap:.2rem .7rem;align-items:start;padding:.75rem 0}
.cl-row input{width:22px;height:22px;margin:.2rem 0 0;accent-color:#009E73}
.cl-name{font-family:var(--head);font-weight:700;text-decoration:none;display:flex;gap:.5rem;align-items:baseline;padding:0}
.cl-links{grid-column:2 / -1;display:flex;flex-wrap:wrap;gap:.1rem 1rem;font-size:.95em}
.cl-links a{display:inline-flex;align-items:center;min-height:40px}
.cl-links .none{color:var(--ink2);font-size:.9em;padding-top:.5rem}
.cl-row.done .cl-name{text-decoration:line-through;text-decoration-thickness:2px}
.cl-row.done .cl-name::after{content:"Contacted";font-family:var(--mono);font-size:.7rem;border:2px solid #009E73;padding:0 .3rem;text-decoration:none;display:inline-block}
.cl-links a{flex:none}
@media (max-width:24rem){.mark{white-space:normal;font-size:1rem;max-width:9.5rem}.acts-top{gap:.3rem}.icon-btn{min-width:42px;padding:0 .4rem}.top-in{gap:.5rem}}
/* header: Get listed is always visible; on the narrowest phones reading settings and the contact list move into the menu */
.get-btn{display:inline-flex;align-items:center;min-height:44px;padding:0 .75rem;font-weight:700;white-space:nowrap;text-decoration:none;background:var(--yellow);color:#191611;border:2px solid #191611}
.get-btn:hover,.get-btn[aria-current]{background:#191611;color:var(--yellow)}
.nav-extra{display:none}
@media (max-width:59.99rem){.nav-extra{display:flex;flex-wrap:wrap;gap:.2rem 1.2rem;border-top:1px solid var(--rule);padding-top:.4rem}.nav-extra>*{display:none}}
@media (max-width:34rem){.mark{white-space:normal;max-width:8.5rem;font-size:1rem}}
@media (max-width:26rem){.read-btn{display:none}.nav-extra .x-read{display:inline-flex}.get-btn{padding:0 .5rem}.mark{font-size:.92rem;max-width:7.2rem;white-space:normal}}
@media (max-width:22.5rem){.acts-top .list-btn{display:none}.nav-extra .x-list{display:inline-flex;align-items:center;min-height:44px;font-weight:700}}
/* home call to action */
.hero-cta{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem 1.2rem}
/* directory pages: why it counts, get listed */
.why{margin:1.1rem 0 0;padding:.55rem 0 .6rem;border-top:3px solid var(--rule);border-bottom:1px dashed var(--ink2);max-width:46rem}
.why-l{display:block;font-family:var(--mono);font-size:.8em;color:var(--ink2)}
.why-s{font-size:.85em;color:var(--ink2)}
.dir-cta{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem .8rem;margin:.9rem 0 0;font-weight:700}
.btn-sm{min-height:44px;padding:.3rem .9rem;background:var(--yellow);color:#191611;border-color:#191611}.btn-sm:hover{background:#191611;color:var(--yellow)}
/* paid: labelled, and never louder than the listing itself */
.tag-off{font-family:var(--mono);font-size:.68em;font-weight:500;padding:0 .35rem;margin-left:.4rem;vertical-align:middle;border:2px dashed var(--gold-ink);color:var(--ink)}
.offers{margin:.3rem 0 .8rem;border:2px dashed var(--ink2);padding:0 .8rem}
.offers summary{cursor:pointer;font-weight:700;min-height:44px;display:flex;align-items:center;gap:.4rem}
.offers ul,.offer-block ul{list-style:none;padding:0;margin:0 0 .6rem}
.offers li,.offer-block li{border-top:1px dashed var(--ink2);padding:.45rem 0;margin:0}
.o-p{font-family:var(--mono);font-size:.9em;margin-left:.3rem}.o-d{display:block;font-size:.95em;color:var(--ink2)}
.offer-block h3{margin:1rem 0 .3rem}
.acts a{display:inline-flex;align-items:center;min-height:42px;font-size:.9em;padding:0 .2rem}
/* info pages: facts, prices, report form */
.facts div{display:grid;grid-template-columns:minmax(7rem,11rem) 1fr;gap:.9rem;border-top:2px solid var(--rule);padding:.7rem 0}
.facts dt{font-family:var(--head);font-weight:800;font-size:1.25em;line-height:1.15}.facts dd{margin:0}
@media (max-width:30rem){.facts div{grid-template-columns:1fr;gap:.2rem}}
.cta-row{display:flex;flex-wrap:wrap;gap:.6rem}
.scroll{overflow-x:auto;max-width:100%}
.prices{border-collapse:collapse;width:100%;max-width:40rem;margin:.6rem 0}
.prices caption{text-align:left;font-family:var(--mono);font-size:.85em;color:var(--ink2);padding-bottom:.3rem}
.prices th,.prices td{border-top:2px solid var(--rule);padding:.6rem 1rem .6rem 0;text-align:left;vertical-align:top}
.prices thead th{font-family:var(--mono);font-weight:500;font-size:.85em;border-top:0}
.prices tbody th span{display:block;font-weight:400;font-size:.88em;color:var(--ink2)}
.prices td{font-family:var(--head);font-weight:800;font-size:1.2em;white-space:nowrap}
.alert{border:3px solid var(--brick);padding:.7rem .9rem;background:var(--bg);max-width:36rem}
.alert a{font-weight:700}
.fold{border-top:2px solid var(--rule);margin-top:0}.fold:last-of-type{border-bottom:2px solid var(--rule)}
.fold summary{cursor:pointer;font-family:var(--head);font-weight:800;font-size:1.15em;padding:.8rem 0;min-height:48px}
.fold[open]{padding-bottom:.6rem}.prose .fold+.fold{margin-top:0}
.radios{border:0;padding:0;margin:0 0 1rem}
.radios legend{font-weight:700;margin-bottom:.3rem}
.radios label{display:inline-flex;align-items:center;gap:.4rem;min-height:44px;margin-right:1.2rem;font-weight:400}
.radios input,.check input{width:22px;height:22px;accent-color:#191611}
.check{display:flex;align-items:center;gap:.5rem}.check label{margin:0}
.form .alert{margin-top:0}

/* listing actions: the owner offer stands out; reporting stays a plain, calm link */
.acts a.act-feat{font-weight:700;background:var(--yellow);color:#191611;border:2px solid #191611;padding:.3rem .8rem;text-decoration:none}
.acts a.act-feat:hover{background:#191611;color:var(--yellow)}
.acts a.act-report{padding:0 .2rem}
/* menu: every option reads as its own item */
.sub li+li a{border-top:1px solid var(--ink2)}
.sub a{padding:.3rem 0}
@media (max-width:59.99rem){
 .grp{border-top:3px solid var(--rule);padding:.6rem 0 .8rem}
 .grp:first-child{border-top:0}
 .sub ul{columns:auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem}
 .sub li+li a{border-top:2px solid var(--ink)}
 .sub a{border:2px solid var(--ink);padding:.35rem .6rem;line-height:1.25;height:100%}
 .sub a:hover,.sub a:focus-visible{background:var(--ink);color:var(--bg);text-decoration:none}
 .sub-h{margin:.7rem 0 .3rem}
 .nav-extra{border-top:3px solid var(--rule);padding-top:.6rem;gap:.4rem}
 .nav-extra .x-list,.nav-extra .x-read{border:2px solid var(--ink);padding:.35rem .6rem;text-decoration:none;font-weight:700;font-size:1em;min-height:44px}
}
@media (min-width:60rem){
 .menu{gap:0}
 .grp+.grp{border-left:2px solid var(--ink2);margin-left:.3rem;padding-left:.3rem}
 .sub a{min-height:44px}
}
.strip a{white-space:nowrap}
/* compact rows (collections, areas, split directory overviews) and category links */
.rows{list-style:none;padding:0;margin:.4rem 0 0;max-width:none}
.row{display:block;padding:.6rem .1rem;border-bottom:1px solid var(--rule);scroll-margin-top:1rem}
.row>a{font-family:var(--head);font-weight:700}
.row .code{font-size:.7em;margin-left:.3rem;vertical-align:.1em}
.row .r-s,.row .r-a{font-size:.9em;color:var(--ink2)}
.row .r-a::before{content:"\00b7\00a0"}
.row:target{background:var(--panel);outline:3px solid var(--ink);outline-offset:-3px}
.cat h2 a{color:inherit}
a.chip{display:inline-flex;align-items:center;text-decoration:none}
.chip[aria-current=page]{background:var(--ink);color:var(--bg)}
.cat-nav{margin:1rem 0}

.c-venues{--c:#D55E00;--f:#191611}.c-pub-venues{--c:#E69F00;--f:#191611}.c-sound-systems{--c:#0072B2;--f:#FFFFFF}.c-studios{--c:#56B4E9;--f:#191611}.c-collectives{--c:#CC79A7;--f:#191611}.c-makers{--c:#F0E442;--f:#191611}.c-labels{--c:#191611;--f:#FFFFFF}.c-bands{--c:#332288;--f:#FFFFFF}.c-services{--c:#D9D3C4;--f:#191611}.c-creatives{--c:#9B7BC4;--f:#191611}.c-circular-economy{--c:#009E73;--f:#191611}.c-organisations{--c:#FFFFFF;--f:#191611}.c-festivals{--c:#F2B6D2;--f:#191611}
