
/* Tokens lifted from fasterlingo.com / confianta.com so the three sites read
   as siblings. Two deliberate changes for this site: the body text is one
   step brighter and one step larger, because a directory is read, not
   skimmed — and orange stays reserved for "click this". */
:root{
  --violet:#7C3AED; --violet-400:#9F67F5; --violet-300:#B794FF;
  --magenta:#C026D3; --magenta-400:#E24BE8; --indigo-deep:#1E1B4B;

  --bg:#08060F; --bg-2:#0D0A1C;
  --header-bg:rgba(8,6,15,.86); --hero-glow:rgba(124,58,237,.28);
  --surface:rgba(255,255,255,.035); --surface-2:rgba(255,255,255,.055);
  --stroke:rgba(255,255,255,.09); --stroke-2:rgba(255,255,255,.16);

  --text:#F3F0FB; --text-soft:#D6D1E8; --text-mute:#9A93B4;

  --action:#F97316; --action-hover:#FB8B3D; --action-ink:#1A0B02;
  --ok:#34D399; --warn:#FBBF24; --bad:#F87171;

  --grad-brand:linear-gradient(120deg,var(--violet) 0%,var(--magenta) 100%);
  --grad-text:linear-gradient(120deg,#B794FF 0%,#E24BE8 55%,#A78BFA 100%);
  --glow-soft:0 20px 60px -20px rgba(124,58,237,.45);
  --glow-action:0 10px 30px -8px rgba(249,115,22,.5);

  --maxw:1120px; --radius:14px; --radius-lg:20px;
  --ease:cubic-bezier(.22,.61,.36,1);
  --font:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
}
/* Three alternatives to the near-black ground, switched from the preview bar
   so the difference can be judged on a real page instead of in a swatch. */
html[data-bg="indigo"]{--bg:#0A0A22;--bg-2:#121132;--header-bg:rgba(10,10,34,.88);--hero-glow:rgba(124,58,237,.34)}
html[data-bg="violet"]{--bg:#0E0819;--bg-2:#180D2B;--header-bg:rgba(14,8,25,.88);--hero-glow:rgba(192,38,211,.26)}
html[data-bg="blue"]{--bg:#060C1C;--bg-2:#0B152C;--header-bg:rgba(6,12,28,.88);--hero-glow:rgba(56,130,246,.26)}

*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{font-size:112.5%;scroll-behavior:smooth;-webkit-text-size-adjust:100%} /* 18px base */
body{font-family:var(--font);background:var(--bg);color:var(--text);line-height:1.65;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;border:none;background:none}
ul{list-style:none}
::selection{background:rgba(192,38,211,.35);color:#fff}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 20px}
/* Shown until PUBLIC_INDEX=true, i.e. until every listing has been checked. */
.preview-bar{background:var(--indigo-deep);color:var(--text-soft);font-size:.8rem;text-align:center;padding:8px 16px;border-bottom:1px solid var(--stroke)}
.preview-bar b{color:#fff}
.icon{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.grad{background:var(--grad-text);-webkit-background-clip:text;background-clip:text;color:transparent}


/* ---------- header ---------- */
header{position:sticky;top:0;z-index:50;background:var(--header-bg);backdrop-filter:blur(12px);border-bottom:1px solid var(--stroke)}
.hrow{display:flex;align-items:center;gap:22px;height:66px}
.brand{display:flex;align-items:center;gap:10px;font-weight:800;font-size:1.05rem;letter-spacing:-.02em;white-space:nowrap;color:var(--text)}
.brand-mark{width:28px;height:28px;border-radius:8px;background:var(--grad-brand);color:#fff;display:grid;place-items:center;font-size:.82rem;font-weight:800}
.brand span{background:var(--grad-text);-webkit-background-clip:text;background-clip:text;color:transparent}
nav.main{display:flex;gap:4px;margin-left:auto;align-items:center}
nav.main a{padding:9px 13px;border-radius:10px;font-size:.92rem;font-weight:500;color:var(--text-soft)}
nav.main a:hover{background:var(--surface-2);color:var(--text)}
nav.main a.on{color:var(--text);font-weight:600;background:var(--surface)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 18px;border-radius:11px;font-size:.92rem;font-weight:600;transition:.18s var(--ease)}
.btn-action{background:var(--action);color:var(--action-ink);box-shadow:var(--glow-action)}
.btn-action:hover{background:var(--action-hover);color:var(--action-ink)}
.btn-ghost{border:1px solid var(--stroke-2);color:var(--text);background:var(--surface)}
.btn-ghost:hover{border-color:var(--violet-400);background:var(--surface-2)}
.menu-btn{display:none;margin-left:auto;padding:9px;border-radius:10px;border:1px solid var(--stroke-2);color:var(--text-soft)}

/* ---------- hero ---------- */
.hero{padding:70px 0 40px;text-align:center;background:radial-gradient(820px 340px at 50% -80px,var(--hero-glow),transparent 70%)}
.hero h1{font-size:clamp(2.1rem,5vw,3.1rem);line-height:1.08;letter-spacing:-.035em;font-weight:800}
.hero p.sub{margin:18px auto 0;max-width:640px;color:var(--text-soft);font-size:1.08rem}
.searchbox{margin:30px auto 0;max-width:660px;display:flex;align-items:center;gap:10px;background:var(--bg-2);border:1.5px solid var(--stroke-2);border-radius:15px;padding:6px 6px 6px 16px;transition:.18s var(--ease)}
.searchbox:focus-within{border-color:var(--violet-400);box-shadow:0 0 0 4px rgba(124,58,237,.22)}
.searchbox .icon{color:var(--text-mute);flex:none}
.searchbox input{flex:1;border:none;outline:none;background:none;padding:13px 0;font-size:1.02rem}
.searchbox input::placeholder{color:var(--text-mute)}
.hero-stats{display:flex;justify-content:center;flex-wrap:wrap;gap:8px 28px;margin-top:24px;color:var(--text-mute);font-size:.9rem}
.hero-stats b{color:var(--text);font-weight:700}

/* ---------- badges ---------- */
.badge{display:inline-flex;align-items:center;gap:6px;padding:4px 11px;border-radius:999px;font-size:.8rem;font-weight:600;white-space:nowrap;border:1px solid transparent}
.badge::before{content:'';width:6px;height:6px;border-radius:50%;background:currentColor;flex:none}
.b-pure{background:rgba(52,211,153,.12);color:#5BE3B3;border-color:rgba(52,211,153,.3)}
.b-prepaid{background:rgba(124,58,237,.16);color:#B794FF;border-color:rgba(124,58,237,.38)}
.b-free{background:rgba(96,165,250,.13);color:#93C5FD;border-color:rgba(96,165,250,.32)}
.b-once{background:rgba(251,191,36,.13);color:#FCD34D;border-color:rgba(251,191,36,.32)}
.badge-legend{display:grid;grid-template-columns:repeat(auto-fit,minmax(248px,1fr));gap:10px;margin-top:30px;text-align:left}
.badge-legend .lg{display:flex;flex-direction:column;gap:7px;background:var(--surface);border:1px solid var(--stroke);border-radius:var(--radius);padding:13px 15px;font-size:.88rem;color:var(--text-soft)}

/* ---------- sections ---------- */
section{padding:48px 0}
.alt{background:var(--bg-2);border-block:1px solid var(--stroke)}
.sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:24px}
.sec-head h2{font-size:1.5rem;letter-spacing:-.025em;font-weight:800}
.sec-head p{color:var(--text-soft);font-size:.96rem;margin-top:4px}
.sec-head a.more{font-size:.92rem;font-weight:600;color:var(--violet-300);white-space:nowrap}
.sec-head a.more:hover{color:var(--magenta-400)}

/* ---------- category groups ---------- */
.cgroup{margin-bottom:26px}
.cgroup>h3{font-size:.84rem;text-transform:uppercase;letter-spacing:.09em;color:var(--text-mute);font-weight:700;margin-bottom:12px;display:flex;align-items:center;gap:10px}
.cgroup>h3::after{content:'';flex:1;height:1px;background:var(--stroke)}
.cats{display:grid;grid-template-columns:repeat(auto-fill,minmax(258px,1fr));gap:12px}
.cat{display:flex;align-items:center;gap:13px;padding:14px;border:1px solid var(--stroke);border-radius:var(--radius);background:var(--surface);transition:.18s var(--ease)}
.cat:hover{border-color:var(--violet-400);background:var(--surface-2);transform:translateY(-1px)}
.cat-ic{width:40px;height:40px;border-radius:11px;background:rgba(124,58,237,.16);color:var(--violet-300);display:grid;place-items:center;flex:none}
.cat-t{font-weight:600;font-size:.98rem;letter-spacing:-.01em;color:var(--text)}
.cat-n{font-size:.85rem;color:var(--text-mute)}

/* ---------- listing cards ---------- */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(336px,1fr));gap:14px}
.card{display:flex;flex-direction:column;gap:13px;padding:17px;border:1px solid var(--stroke);border-radius:var(--radius-lg);background:var(--surface);transition:.18s var(--ease)}
.card:hover{border-color:var(--stroke-2);background:var(--surface-2);transform:translateY(-2px);box-shadow:var(--glow-soft)}
.card-top{display:flex;gap:13px;align-items:flex-start}
.logo{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;font-weight:800;font-size:1rem;color:#fff;flex:none;letter-spacing:-.02em}
.card-name{font-weight:700;font-size:1.06rem;letter-spacing:-.015em;display:flex;align-items:center;gap:8px;color:var(--text)}
.mine{font-size:.7rem;font-weight:700;color:var(--magenta-400);border:1px solid rgba(192,38,211,.4);background:rgba(192,38,211,.14);border-radius:6px;padding:1px 6px;letter-spacing:.04em}
.card-tag{font-size:.94rem;color:var(--text-soft);margin-top:3px}
.card-price{margin-left:auto;text-align:right;flex:none}
.card-price b{display:block;font-size:1.06rem;letter-spacing:-.02em;color:var(--text)}
.card-price span{font-size:.79rem;color:var(--text-mute)}
.facts{display:flex;flex-wrap:wrap;gap:7px;align-items:center}
.fact{font-size:.82rem;color:var(--text-soft);background:var(--surface-2);border:1px solid var(--stroke);border-radius:8px;padding:3px 9px}
.fact b{font-weight:600;color:var(--text)}
.card-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;border-top:1px solid var(--stroke);padding-top:12px;margin-top:auto}
.checked{font-size:.82rem;color:var(--text-mute);display:flex;align-items:center;gap:6px}
.checked .icon{width:15px;height:15px;color:var(--ok)}
.card-foot .view{font-size:.9rem;font-weight:600;color:var(--violet-300)}
.card:hover .view{color:var(--magenta-400)}

/* ---------- empty / research state ---------- */
.research{border:1px dashed var(--stroke-2);border-radius:var(--radius-lg);padding:26px;text-align:center;background:var(--surface)}
.research h3{font-size:1.1rem;margin-bottom:7px}
.research p{color:var(--text-soft);font-size:.95rem;max-width:520px;margin:0 auto 16px}

/* ---------- category page ---------- */
.two-col{display:grid;grid-template-columns:244px 1fr;gap:30px;align-items:start;padding:34px 0 60px}
.filters{position:sticky;top:86px;border:1px solid var(--stroke);border-radius:var(--radius-lg);padding:17px;background:var(--surface)}
.f-group+.f-group{margin-top:18px;padding-top:16px;border-top:1px solid var(--stroke)}
.f-group h3{font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-mute);font-weight:700;margin-bottom:10px}
.f-opt{display:flex;align-items:center;gap:10px;padding:6px 0;font-size:.92rem;color:var(--text-soft);cursor:pointer}
.f-opt input{accent-color:var(--violet);width:16px;height:16px}
.f-opt:hover{color:var(--text)}
.crumbs{font-size:.89rem;color:var(--text-mute);display:flex;gap:8px;align-items:center;margin-bottom:14px;flex-wrap:wrap}
.crumbs a:hover{color:var(--violet-300)}
.list-head{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:20px}
.list-head h1{font-size:1.8rem;letter-spacing:-.03em}
.list-head p{color:var(--text-soft);font-size:.96rem;margin-top:4px}
.sortsel{border:1px solid var(--stroke-2);border-radius:10px;padding:9px 12px;font-size:.9rem;background:var(--bg-2)}

/* ---------- tool page ---------- */
.tool-hero{padding:34px 0 28px;border-bottom:1px solid var(--stroke);background:radial-gradient(700px 260px at 15% -60px,var(--hero-glow),transparent 70%)}
.tool-top{display:flex;gap:20px;align-items:flex-start;flex-wrap:wrap}
.logo-lg{width:68px;height:68px;border-radius:17px;font-size:1.6rem}
.tool-top h1{font-size:2.1rem;letter-spacing:-.035em;line-height:1.14}
.tool-top .tl{color:var(--text-soft);margin-top:6px;font-size:1.08rem;max-width:620px}
.tool-cta{margin-left:auto;display:flex;flex-direction:column;gap:10px;align-items:stretch;min-width:230px}
.tool-cta small{font-size:.8rem;color:var(--text-mute);text-align:center}
.tool-body{display:grid;grid-template-columns:1fr 330px;gap:36px;align-items:start;padding:32px 0 56px}
.prose h2{font-size:1.25rem;letter-spacing:-.02em;margin:30px 0 10px}
.prose h2:first-child{margin-top:0}
.prose p{color:var(--text-soft);margin-bottom:12px;font-size:1rem;line-height:1.7}
.prose a{color:var(--violet-300);font-weight:600}
.checklist li{display:flex;gap:11px;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--stroke);font-size:.98rem;color:var(--text-soft)}
.checklist .icon{flex:none;width:19px;height:19px;margin-top:3px}
.yes{color:var(--ok)} .no{color:var(--bad)}
.ptable{width:100%;border-collapse:collapse;font-size:.96rem;border:1px solid var(--stroke);border-radius:var(--radius);overflow:hidden}
.ptable th{text-align:left;background:var(--surface-2);font-size:.8rem;text-transform:uppercase;letter-spacing:.07em;color:var(--text-mute);padding:10px 13px;border-bottom:1px solid var(--stroke)}
.ptable td{padding:11px 13px;border-bottom:1px solid var(--stroke);color:var(--text-soft)}
.ptable tr:last-child td{border-bottom:none}
.ptable td b{color:var(--text)}
.side-card{border:1px solid var(--stroke);border-radius:var(--radius-lg);padding:17px;background:var(--surface)}
.side-card+.side-card{margin-top:14px}
.side-card h3{font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-mute);font-weight:700;margin-bottom:12px}
.kv{display:flex;justify-content:space-between;gap:12px;padding:8px 0;font-size:.94rem;border-bottom:1px solid var(--stroke);color:var(--text-soft)}
.kv:last-child{border-bottom:none}
.kv b{font-weight:600;text-align:right;color:var(--text)}
a.kv:hover b,a.kv:hover span{color:var(--violet-300)}

/* ---------- rules / submit ---------- */
.narrow{max-width:780px;margin:0 auto;padding:44px 0 64px}
.narrow h1{font-size:2.1rem;letter-spacing:-.03em;margin-bottom:10px}
.narrow .lead{color:var(--text-soft);font-size:1.08rem;margin-bottom:28px}
.rule{display:flex;gap:15px;padding:17px;border:1px solid var(--stroke);border-radius:var(--radius-lg);background:var(--surface);margin-bottom:12px}
.rule-n{width:30px;height:30px;border-radius:9px;background:rgba(124,58,237,.18);color:var(--violet-300);font-weight:700;font-size:.92rem;display:grid;place-items:center;flex:none}
.rule h3{font-size:1.06rem;margin-bottom:4px}
.rule p{font-size:.97rem;color:var(--text-soft)}
.reject{border-color:rgba(248,113,113,.3);background:rgba(248,113,113,.06)}
.reject .rule-n{background:rgba(248,113,113,.15);color:var(--bad)}
.field{margin-bottom:17px}
.field label{display:block;font-size:.92rem;font-weight:600;margin-bottom:7px}
.field input,.field select,.field textarea{width:100%;border:1.5px solid var(--stroke-2);border-radius:11px;padding:12px 14px;font-size:.98rem;outline:none;background:var(--bg-2);color:var(--text)}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--violet-400);box-shadow:0 0 0 4px rgba(124,58,237,.18)}
.field .hint{font-size:.86rem;color:var(--text-mute);margin-top:6px}
.row-2{display:grid;grid-template-columns:1fr 1fr;gap:15px}
.note{background:rgba(124,58,237,.1);border:1px solid rgba(124,58,237,.28);border-radius:var(--radius);padding:14px 16px;font-size:.95rem;color:var(--text-soft)}
.note b{color:var(--text)}

/* ---------- footer ---------- */
footer{border-top:1px solid var(--stroke);background:var(--bg-2);padding:42px 0 32px;margin-top:20px}
.fcols{display:grid;grid-template-columns:1.6fr repeat(3,1fr);gap:28px}
.fcols h4{font-size:.8rem;text-transform:uppercase;letter-spacing:.08em;color:var(--text-mute);margin-bottom:11px}
.fcols li{margin-bottom:8px;font-size:.94rem;color:var(--text-soft)}
.fcols li a:hover{color:var(--violet-300)}
.fbrand p{font-size:.94rem;color:var(--text-mute);margin-top:12px;max-width:300px}
.fbot{border-top:1px solid var(--stroke);margin-top:28px;padding-top:20px;font-size:.87rem;color:var(--text-mute);display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap}

@media (max-width:900px){
  .two-col,.tool-body{grid-template-columns:1fr}
  .filters{position:static}
  .fcols{grid-template-columns:1fr 1fr}
}
@media (max-width:640px){
  nav.main{display:none}
  .menu-btn{display:block}
  .hero{padding:48px 0 30px}
  .searchbox .btn span{display:none}
  .row-2{grid-template-columns:1fr}
  .fcols{grid-template-columns:1fr}
  .tool-cta{margin-left:0;width:100%}
}

/* ---------- our observations ----------
   Facts we can stand behind, not a review. A plus, a minus and a plain
   observation each get their own colour so the eye can sort them at a glance. */
.obs{display:grid;gap:10px;margin-top:4px}
.obs li{display:flex;gap:11px;align-items:flex-start;padding:12px 14px;border:1px solid var(--stroke);border-radius:var(--radius);background:var(--surface);font-size:.97rem;color:var(--text-soft);line-height:1.6}
.obs .icon{flex:none;width:19px;height:19px;margin-top:2px}
.obs .plus .icon{color:var(--ok)}
.obs .minus .icon{color:var(--warn)}
.obs .fact-i .icon{color:var(--violet-300)}
.obs b{color:var(--text)}
.obs-note{font-size:.86rem;color:var(--text-mute);margin-top:10px}

/* ---------- rating chip ---------- */
.rating{display:inline-flex;align-items:center;gap:7px;padding:4px 11px;border-radius:999px;font-size:.82rem;font-weight:600;background:rgba(251,191,36,.12);color:#FCD34D;border:1px solid rgba(251,191,36,.3)}
.rating .icon{width:14px;height:14px;fill:currentColor;stroke:none}
.rating span{color:var(--text-mute);font-weight:500}
.side-card .rating{margin-bottom:10px}

/* "Billed afterwards" — rare enough to be worth its own mark. It is not a
   pricing model, it is when the money leaves your pocket, so it sits next to
   the badge rather than replacing it. */
.after{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;font-size:.8rem;font-weight:600;background:rgba(56,189,248,.12);color:#7DD3FC;border:1px solid rgba(56,189,248,.3);white-space:nowrap}
.after .icon{width:14px;height:14px}

.checked.unchecked{color:var(--warn)}
.checked.unchecked .icon{color:var(--warn)}

/* Evidence and comparison content remains readable without client scripts. */
.category-guide{padding:24px;margin-bottom:24px;background:var(--surface);border:1px solid var(--stroke);border-radius:var(--radius);line-height:1.75}
.category-guide h2{font-size:1.45rem;margin-bottom:12px}
.category-guide h3{margin:22px 0 8px;font-size:1.08rem}
.category-guide p{color:var(--text-soft)}
.comparison-scroll{overflow-x:auto;margin:20px 0}
.comparison-scroll table{min-width:540px}
.comparison-scroll caption{text-align:left;font-weight:600;padding:10px 0}
.review-evidence{border:1px solid var(--stroke);padding:18px;border-radius:var(--radius);margin:14px 0}
.prose a,.category-guide a{color:var(--violet-300);text-decoration:underline;text-underline-offset:3px}
.mobile-menu{display:none}
@media(max-width:720px){
.mobile-menu{display:block;margin-left:auto;position:relative}
.mobile-menu summary{cursor:pointer;padding:10px;border:1px solid var(--stroke);border-radius:8px}
.mobile-menu nav{position:absolute;right:0;top:44px;z-index:10;min-width:200px;background:var(--bg-2);border:1px solid var(--stroke);padding:12px}
.mobile-menu nav a{display:block;padding:10px}
.filters{display:block!important}
.category-guide{padding:18px}
}
