.ks-third-party-tools-page{background:var(--bg);color:var(--text,#d9e2ea)}
.ks-tpt-shell{display:grid;gap:1rem;padding-top:1.15rem;padding-bottom:2rem}
.ks-tpt-shell a{text-decoration:none}
.ks-tpt-breadcrumbs{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;color:var(--muted);font-size:.78rem;padding:.1rem .2rem}
.ks-tpt-breadcrumbs a{color:var(--link)}
.ks-tpt-breadcrumbs strong{color:#dce8ee}
.ks-tpt-hero{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(250px,.55fr);gap:1rem;padding:clamp(1.25rem,3vw,2.2rem);border-radius:var(--radius);overflow:hidden;position:relative}
.ks-tpt-hero:after{content:"";position:absolute;inset:auto -8% -55% 25%;height:260px;background:radial-gradient(circle,rgba(0,255,231,.12),transparent 66%);pointer-events:none}
.ks-tpt-hero-copy{position:relative;z-index:1;align-self:center}
.ks-tpt-eyebrow,.ks-tpt-kicker,.ks-tpt-resource-kind{display:block;text-transform:uppercase;letter-spacing:.1em;font-weight:800;color:var(--neon,#00ffe7);font-size:.72rem}

.ks-tpt-hero h1{font-size:clamp(1.25rem,3vw,2.8rem);line-height:.96;margin:.35rem 0 .75rem;color:#fff;letter-spacing:-.045em}

.ks-tpt-hero p{max-width:900px;margin:0;color:var(--muted);font-size:clamp(.94rem,1.7vw,1.08rem);line-height:1.65}
.ks-tpt-actions{display:flex;flex-wrap:wrap;gap:.55rem;margin-top:1rem}
.ks-tpt-btn{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;padding:.64rem .9rem;border:1px solid var(--edge);border-radius:999px;color:#dce6ec;background:rgba(255,255,255,.035);font-weight:800;font-size:.8rem;transition:.15s ease}
.ks-tpt-btn:hover{transform:translateY(-1px);border-color:rgba(255,255,255,.24);color:#fff}
.ks-tpt-btn.primary{background:var(--neon,#00ffe7);border-color:transparent;color:#03120f;box-shadow:0 0 22px rgba(0,255,231,.12)}
.ks-tpt-btn.primary:hover{filter:brightness(1.05);color:#03120f}
.ks-tpt-hero-stats{display:grid;align-content:stretch;gap:.6rem;position:relative;z-index:1}
.ks-tpt-hero-stats>div{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:.75rem;padding:.85rem 1rem;border:1px solid var(--edge);border-radius:14px;background:rgba(0,0,0,.18)}
.ks-tpt-hero-stats strong{font-size:1.65rem;color:#fff;line-height:1}
.ks-tpt-hero-stats span{color:var(--muted);font-size:.78rem;line-height:1.35}
.ks-tpt-note,.ks-tpt-closing{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1rem;align-items:center;padding:1rem 1.15rem;border-radius:var(--radius)}
.ks-tpt-note h2,.ks-tpt-closing h2{margin:.2rem 0 .35rem;color:#fff;font-size:1.15rem}
.ks-tpt-note p,.ks-tpt-closing p{margin:0;color:var(--muted);line-height:1.55;font-size:.86rem;max-width:1100px}
.ks-tpt-note>a{white-space:nowrap;color:var(--link);font-weight:800;font-size:.82rem}
.ks-tpt-directory{padding:1rem;border-radius:var(--radius)}
.ks-tpt-section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;padding:.3rem .15rem 1rem}
.ks-tpt-section-head h2{margin:.2rem 0 .3rem;color:#fff;font-size:clamp(1.4rem,3vw,2rem)}
.ks-tpt-section-head p{margin:0;color:var(--muted);font-size:.86rem;line-height:1.5}
.ks-tpt-result-count{display:flex;align-items:baseline;gap:.4rem;white-space:nowrap;padding:.55rem .7rem;border-radius:12px;border:1px solid var(--edge);background:rgba(255,255,255,.025)}
.ks-tpt-result-count strong{font-size:1.25rem;color:#fff}.ks-tpt-result-count span{font-size:.72rem;color:var(--muted)}
.ks-tpt-toolbar{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.55rem;margin-bottom:.7rem}
.ks-tpt-search input{width:100%;min-height:44px;border:1px solid var(--edge);border-radius:12px;background:rgba(0,0,0,.22);color:#fff;padding:.7rem .85rem;font:inherit;outline:none}
.ks-tpt-search input:focus{border-color:rgba(0,255,231,.55);box-shadow:0 0 0 3px rgba(0,255,231,.08)}
.ks-tpt-clear{border:1px solid var(--edge);border-radius:12px;background:rgba(255,255,255,.035);color:#d9e4e9;padding:0 .9rem;font-weight:800;cursor:pointer}
.ks-tpt-filters{display:flex;flex-wrap:wrap;gap:.42rem;margin-bottom:1rem}
.ks-tpt-filter{appearance:none;display:inline-flex;align-items:center;gap:.35rem;border:1px solid var(--edge);border-radius:999px;background:rgba(255,255,255,.025);color:#bfcbd2;padding:.42rem .68rem;font:inherit;font-weight:750;font-size:.72rem;cursor:pointer;transition:.15s ease}
.ks-tpt-filter:hover{color:#fff;border-color:rgba(255,255,255,.22)}
.ks-tpt-filter.active{background:rgba(0,255,231,.1);border-color:rgba(0,255,231,.38);color:var(--neon,#00ffe7)}
.ks-tpt-filter span:first-child{font-size:.85rem}.ks-tpt-filter span:last-child,.ks-tpt-filter em{font-style:normal;color:inherit;opacity:.72}
.ks-tpt-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem}
.ks-tpt-card{display:flex;flex-direction:column;min-width:0;padding:1rem;border-radius:16px;border:1px solid var(--edge);transition:transform .15s ease,border-color .15s ease,box-shadow .15s ease}
.ks-tpt-card:hover{transform:translateY(-2px);border-color:rgba(0,255,231,.24);box-shadow:0 12px 35px rgba(0,0,0,.12)}
.ks-tpt-card[hidden]{display:none!important}
.ks-tpt-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:.8rem}
.ks-tpt-card h3{margin:.15rem 0 0;color:#fff;font-size:1.15rem;line-height:1.15}
.ks-tpt-resource-kind{font-size:.62rem;color:#78aeca}
.ks-tpt-coverage-count{flex:0 0 auto;padding:.3rem .5rem;border:1px solid var(--edge);border-radius:999px;color:var(--muted);font-size:.64rem;white-space:nowrap}
.ks-tpt-category-chips{display:flex;flex-wrap:wrap;gap:.35rem;margin:.8rem 0}
.ks-tpt-category-chips span{display:inline-flex;align-items:center;gap:.28rem;padding:.27rem .46rem;border-radius:999px;background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.07);color:#b7c7ce;font-size:.65rem}
.ks-tpt-category-chips b{font-size:.73rem}
.ks-tpt-best-for{padding:.75rem;border-radius:12px;background:rgba(0,0,0,.16);border:1px solid rgba(255,255,255,.05);flex:1}
.ks-tpt-best-for>span{display:block;color:#91a8b2;font-size:.65rem;text-transform:uppercase;letter-spacing:.08em;font-weight:800;margin-bottom:.4rem}
.ks-tpt-best-for ul{margin:0;padding-left:1.05rem;color:#d7e1e5;font-size:.77rem;line-height:1.45}
.ks-tpt-best-for li+li{margin-top:.18rem}
.ks-tpt-best-for small{display:block;margin-top:.45rem;color:var(--muted);font-size:.68rem}
.ks-tpt-card-actions{display:flex;margin-top:.8rem}.ks-tpt-card-actions .ks-tpt-btn{width:100%}
.ks-tpt-empty{display:grid;gap:.2rem;text-align:center;padding:1.5rem;border-radius:14px;color:var(--muted)}.ks-tpt-empty strong{color:#fff}
.ks-tpt-closing{padding:1.2rem 1.3rem}.ks-tpt-closing .ks-tpt-actions{margin:0;justify-content:flex-end}
@media(max-width:1050px){.ks-tpt-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ks-tpt-hero{grid-template-columns:1fr}.ks-tpt-hero-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.ks-tpt-hero-stats>div{grid-template-columns:1fr;gap:.25rem}}
@media(max-width:720px){.ks-tpt-shell{padding-top:.7rem}.ks-tpt-grid{grid-template-columns:1fr}.ks-tpt-hero{padding:1.15rem}.ks-tpt-hero-stats{grid-template-columns:1fr}.ks-tpt-hero-stats>div{grid-template-columns:auto 1fr}.ks-tpt-note,.ks-tpt-closing{grid-template-columns:1fr}.ks-tpt-section-head{align-items:flex-start;flex-direction:column}.ks-tpt-toolbar{grid-template-columns:1fr}.ks-tpt-clear{min-height:42px}.ks-tpt-closing .ks-tpt-actions{justify-content:flex-start}.ks-tpt-card-head{align-items:center}}

/* Readability pass: keep the background art visible around the page without
   forcing text-heavy panels to compete with it. */
.ks-third-party-tools-page .ks-tpt-hero,
.ks-third-party-tools-page .ks-tpt-note,
.ks-third-party-tools-page .ks-tpt-directory,
.ks-third-party-tools-page .ks-tpt-closing{
  background:linear-gradient(
    180deg,
    color-mix(in srgb,var(--ks-fm-surface,#101923) 94%,#000 6%),
    color-mix(in srgb,var(--ks-fm-bg,#070b12) 96%,#000 4%)
  );
}
.ks-third-party-tools-page .ks-tpt-card{
  background:linear-gradient(
    180deg,
    color-mix(in srgb,var(--ks-fm-surface,#101923) 93%,#000 7%),
    color-mix(in srgb,var(--ks-fm-bg,#070b12) 95%,#000 5%)
  );
}
.ks-third-party-tools-page .ks-tpt-hero-stats>div,
.ks-third-party-tools-page .ks-tpt-best-for,
.ks-third-party-tools-page .ks-tpt-result-count,
.ks-third-party-tools-page .ks-tpt-search input,
.ks-third-party-tools-page .ks-tpt-clear{
  background:color-mix(in srgb,var(--ks-fm-bg,#070b12) 88%,#000 12%);
}

/* Author CSS with display:grid otherwise overrides the browser's [hidden]
   rule, which could make the empty-state message appear alongside results. */
.ks-third-party-tools-page .ks-tpt-empty[hidden]{display:none!important}
