:root{
--bg:#FAFAFC;--surface:#FFFFFF;--ink:#16141F;--ink-soft:#3D3A4C;--muted:#726F85;
--line:#E3E1EA;--accent:#e14324;--accent-soft:#fbe8e5;--radius:8px;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font-family:"Inter",Georgia,serif;font-size:1.0rem;line-height:1.68;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img,svg{max-width:100%}
img{height:auto;display:block}
a{color:var(--accent);text-underline-offset:3px;text-decoration-thickness:1px}
h1,h2,h3,h4{font-family:"Inter",Georgia,serif;font-weight:700;letter-spacing:-0.025em;line-height:1.12;color:var(--ink);margin:0 0 .55em}
h1{font-size:clamp(2.1rem,5vw,3.4rem)}
h2{font-size:clamp(1.45rem,2.9vw,2rem);margin-top:2.4em}
h3{font-size:1.18rem;margin-top:1.9em}
p,ul,ol,table,blockquote,pre{margin:0 0 1.2em}
ul,ol{padding-left:1.25em}
li{margin-bottom:.45em}
strong{font-weight:600}
.wrap{max-width:62rem;margin:0 auto;padding:0 1.5rem}
.muted{color:var(--muted)}
.skip{position:absolute;left:-9999px}
.skip:focus{left:.5rem;top:.5rem;background:var(--surface);padding:.6rem .9rem;z-index:20;border:2px solid var(--accent);border-radius:var(--radius)}
:focus-visible{outline:2.5px solid var(--accent);outline-offset:3px;border-radius:2px}
main{padding-bottom:4rem}
.mark{flex:none}

/* ---------- masthead ---------- */
header.mast{position:relative;z-index:3}
.mast-in{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;padding:1.1rem 0;flex-wrap:wrap}
.brand{display:inline-flex;align-items:center;gap:.6rem;font-family:"Inter",sans-serif;font-weight:700;font-size:1.16rem;letter-spacing:-0.025em;color:var(--ink);text-decoration:none;}
.brand:hover{text-decoration:none;color:var(--accent)}
.brand .mark{width:30px;height:30px}
nav.top ul{display:flex;flex-wrap:wrap;gap:.35rem;list-style:none;margin:0;padding:0}
nav.top a{display:block;color:var(--ink-soft);text-decoration:none;font-size:.875rem;font-family:"Inter",sans-serif;padding:.4rem .7rem;border-radius:var(--radius);transition:background .15s,color .15s}
nav.top a:hover{color:var(--accent);background:var(--accent-soft);text-decoration:none}
nav.top a[aria-current=page]{color:var(--accent);background:var(--accent-soft);font-weight:600}

/* ---------- hero ----------
   Deliberately compact: a hero that fills the viewport pushes every piece of
   real content below the fold, which is what makes a site read as a brochure
   rather than a publication. */
.hero{position:relative;overflow:hidden;padding:clamp(1.8rem,3.4vw,2.9rem) 0 clamp(1.6rem,3vw,2.4rem);margin-bottom:2rem}
.hero-in{position:relative;z-index:2;max-width:46rem}
.hero h1{margin-bottom:.3em;color:#16141F;font-size:clamp(1.9rem,4vw,2.9rem)}
.kicker{display:inline-block;font-family:"Inter",sans-serif;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.16em;color:var(--accent);margin-bottom:.7rem}
.hero .lede{font-size:clamp(1rem,1.5vw,1.17rem);line-height:1.5;color:#3D3A4C;max-width:42rem;margin:0}
.mark-ghost{position:absolute;right:-5rem;top:50%;transform:translateY(-50%);width:min(22rem,34vw);height:auto;opacity:.07;z-index:1;pointer-events:none}
@media(max-width:760px){.mark-ghost{display:none}}

/* Hero with photography: image sits beside the text rather than behind it, so
   the words stay legible without a scrim. */
.hero-media{display:grid;grid-template-columns:1.15fr .85fr;gap:2.5rem;align-items:center}
.hero-media .hero-in{max-width:none}
.hero-figure{position:relative;z-index:2;margin:0}
.hero-figure img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:var(--radius);border:1px solid #E3E1EA}
.hero-figure figcaption{font-size:.68rem;line-height:1.4;color:#726F85;margin-top:.45rem}
@media(max-width:820px){.hero-media{grid-template-columns:1fr;gap:1.4rem}.hero-figure img{aspect-ratio:16/9}}

/* ---------- structural axes ----------
   These are seeded per DOMAIN, independently of the archetype, so two sites
   sharing a layout family are still built differently. */
.mast-tagline{font-size:.8rem;color:var(--muted);font-style:italic}
.nav-band .mast-in{padding-bottom:.75rem}
.nav-band .navband{background:var(--ink);border-top:1px solid var(--line)}
.nav-band .navband nav.top ul{gap:0;padding:0}
.nav-band .navband nav.top a{color:rgba(255,255,255,.86);border-radius:0;padding:.6rem .95rem;font-size:.8rem;text-transform:uppercase;letter-spacing:.07em}
.nav-band .navband nav.top a:hover,.nav-band .navband nav.top a[aria-current=page]{background:var(--accent);color:#fff}
.nav-centered .mast-in{flex-direction:column;gap:.25rem;text-align:center;padding-bottom:.5rem}
.nav-centered .brand{font-size:clamp(1.5rem,3.6vw,2.3rem)}
.nav-centered nav.top ul{justify-content:center;padding-bottom:.85rem}
.nav-rail .mast-in{align-items:baseline}
.nav-rail nav.top ul{gap:1.1rem}
.nav-rail nav.top a{padding:.2rem 0;border-radius:0;border-bottom:2px solid transparent}
.nav-rail nav.top a:hover,.nav-rail nav.top a[aria-current=page]{background:none;border-bottom-color:var(--accent)}

.hero-panel .hero-box{background:var(--surface);border:1px solid var(--line);border-left:5px solid var(--accent);border-radius:var(--radius);padding:1.8rem 2rem}
.hero-offset{padding-left:0}
.hero-offset .hero-rule{display:block;width:4.5rem;height:5px;background:var(--accent);margin-bottom:1.1rem}
.hero-offset .hero-in{padding-left:0}
.hero-bleed{background:var(--ink);color:#fff;margin-bottom:2.5rem}
.hero-bleed h1{color:#fff}
.hero-bleed .lede{color:rgba(255,255,255,.78)}
.hero-bleed .kicker{color:var(--accent)}
.hero-split .hero-media{grid-template-columns:.9fr 1.1fr}

.index.magazine{display:block}
.index.magazine li{border-bottom:1px solid var(--line);padding:1.3rem 0;background:none;border-radius:0;box-shadow:none!important;transform:none!important}
.index.magazine li:first-child{padding-top:0}
.index.magazine li:first-child h3{font-size:1.6rem}
.index.magazine li:first-child p{font-size:1.02em}

/* Inline article imagery */
figure.inline{margin:2rem 0}
figure.inline img{width:100%;border-radius:var(--radius);border:1px solid var(--line)}
figure.inline figcaption{font-size:.72rem;color:var(--muted);margin-top:.5rem;line-height:1.45}

/* A band of real content immediately under the hero, so something useful is
   visible without scrolling. */
.lead-strip{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--surface);padding:1.15rem 0;margin-bottom:2.5rem}
.lead-strip-in{display:flex;flex-wrap:wrap;gap:1.6rem 2.4rem;align-items:baseline}
.lead-strip .item{display:flex;align-items:baseline;gap:.55rem;font-size:.9rem}
.lead-strip .item b{font-family:"Inter",sans-serif;font-weight:700;font-size:1.05rem;color:var(--accent)}
.lead-strip .item span{color:var(--muted)}

/* ---------- article body ---------- */
article{max-width:44rem}
article>p:first-of-type{font-size:1.06em;color:var(--ink-soft)}
blockquote{border-left:3px solid var(--accent);margin-left:0;padding:.3em 0 .3em 1.3em;color:var(--ink-soft);font-style:italic}
code{font-family:ui-monospace,"SF Mono",Menlo,monospace;font-size:.88em;background:var(--accent-soft);color:#e14324;padding:.15em .42em;border-radius:4px;font-weight:500}
pre{background:#15181F;color:#E6EDF3;padding:1.15rem 1.3rem;border-radius:var(--radius);overflow-x:auto;font-size:.87rem;line-height:1.6;border:1px solid transparent}
pre code{background:none;padding:0;color:inherit;font-weight:400}
table{width:100%;border-collapse:collapse;font-size:.94em;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
th,td{text-align:left;padding:.72em .9em;border-bottom:1px solid var(--line)}
tbody tr:last-child td{border-bottom:none}
th{font-family:"Inter",sans-serif;font-weight:600;font-size:.76em;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);background:var(--bg)}
tbody tr:hover{background:var(--accent-soft)}
hr{border:none;border-top:1px solid var(--line);margin:2.5rem 0}

/* ---------- index cards ---------- */
.index{list-style:none;padding:0;margin:2rem 0 0;display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(18rem,1fr))}
.index li{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1.4rem 1.5rem;transition:transform .16s ease,box-shadow .16s ease,border-color .16s ease}
.index li:hover{transform:translateY(-2px);border-color:var(--accent);box-shadow:0 10px 30px -12px rgba(16,20,26,.18)}
.index h3{margin:0 0 .45rem;font-size:1.08rem}
.index h3 a{color:var(--ink);text-decoration:none}
.index h3 a::after{content:"";position:absolute;inset:0}
.index li:hover h3 a{color:var(--accent)}
.index p{margin:0;color:var(--muted);font-size:.92em;line-height:1.55}

/* ---------- tools ---------- */
.tool{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1.6rem;margin:2rem 0;box-shadow:0 1px 2px rgba(16,20,26,.04)}
.tool .row{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr));margin-bottom:1.1rem}
.tool label{display:block;font-size:.74rem;font-family:"Inter",sans-serif;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:.4rem}
.tool input,.tool select,.tool textarea{width:100%;padding:.7rem .8rem;border:1.5px solid var(--line);border-radius:var(--radius);background:var(--bg);color:var(--ink);font:inherit;font-size:1rem;font-family:"Inter",sans-serif;font-weight:500;transition:border-color .14s}
.tool input:focus,.tool select:focus,.tool textarea:focus{border-color:var(--accent);outline:none}
.calc-out{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(8rem,1fr));border-top:1px solid var(--line);margin-top:1.3rem;padding-top:1.3rem}
.calc-out div{min-width:0}
.calc-out span{display:block;font-size:.7rem;font-family:"Inter",sans-serif;font-weight:600;text-transform:uppercase;letter-spacing:.09em;color:var(--muted);margin-bottom:.3rem}
.calc-out strong{display:block;font-family:"Inter",sans-serif;font-size:1.5rem;font-weight:700;letter-spacing:-.02em;color:var(--ink);word-break:break-word;line-height:1.1}
.calc-out div:first-child strong,.calc-out div:nth-child(4) strong{color:var(--accent)}
.note{font-size:.9rem;color:var(--muted);margin:1.1rem 0 0;line-height:1.6;padding-top:.9rem;border-top:1px dashed var(--line)}

footer{border-top:1px solid var(--line);margin-top:5rem;padding:2.5rem 0 3.5rem;font-size:.86rem;color:var(--muted);background:var(--surface)}
.foot-grid{display:flex;flex-wrap:wrap;gap:2rem;justify-content:space-between;align-items:flex-start}
.foot-brand{display:flex;align-items:center;gap:.55rem;font-family:"Inter",sans-serif;font-weight:600;color:var(--ink);margin-bottom:.6rem}
.foot-brand .mark{width:22px;height:22px}
.disclaim{max-width:46ch;line-height:1.6}
footer a{color:var(--ink-soft)}
footer nav a{display:inline-block;margin-right:1rem;text-decoration:none}
footer nav a:hover{color:var(--accent)}
@media (prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto}}
header.mast{background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0}
.hero{background:var(--surface);border-bottom:1px solid var(--line)}
.hero::after{content:"";position:absolute;inset:0;background-image:url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' width='24' height='24'><circle cx='2' cy='2' r='1.3' fill='rgba(0%2C0%2C0%2C0.05)'/></svg>");opacity:.8;z-index:0}
.index li{padding:0}
.index li>a,.index li>h3>a{display:block}
.index h3{padding:1.3rem 1.4rem .4rem}
.index p{padding:0 1.4rem 1.4rem}
/* Ranked operator cards. Rounded, generous, colour-forward — the conventions
   this category's readers already expect. Square-cornered restraint reads as
   unfinished here, whatever it does on a reference site. */
.trust-row{display:flex;flex-wrap:wrap;gap:.6rem 1.6rem;list-style:none;margin:0 0 2rem;padding:0;font-size:.86rem;color:var(--ink-soft)}
.trust-row li{display:flex;align-items:center;gap:.45rem}
.trust-row .tick{display:inline-flex;align-items:center;justify-content:center;width:1.15rem;height:1.15rem;border-radius:50%;background:var(--accent);color:#fff;font-size:.7rem;font-weight:700;flex:none}

/* The operator list is a listing, not prose, so it breaks out of the article's
   reading measure and runs the full content width. */
.op-list{list-style:none;margin:2rem 0 .8rem;padding:0;display:flex;flex-direction:column;gap:.85rem;width:min(62rem,100%);max-width:none}
@media(min-width:1100px){.op-list{width:56rem}}
.op-card{position:relative;display:grid;grid-template-columns:2.2rem 4rem 1fr auto auto;align-items:center;gap:1.1rem;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:1.15rem 1.35rem;transition:border-color .15s,box-shadow .15s,transform .15s}
.op-card:hover{border-color:var(--accent);box-shadow:0 8px 26px -14px rgba(16,20,26,.28);transform:translateY(-1px)}
.op-card.is-top{border-color:#e0a92b;border-width:2px;padding-top:1.6rem}
.ribbon{position:absolute;top:-.7rem;left:1.2rem;background:#e0a92b;color:#241a05;font-size:.68rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:.24rem .6rem;border-radius:999px}
.op-rank{font-size:1.35rem;font-weight:700;color:var(--muted);text-align:center;opacity:.65}
.op-logo{width:4rem;height:4rem;border:1px solid var(--line);border-radius:12px;display:flex;align-items:center;justify-content:center;overflow:hidden;background:var(--bg)}
.op-logo img{width:100%;height:100%;object-fit:contain;padding:.4rem}
.op-initial{font-weight:700;font-size:1.05rem;color:var(--muted);letter-spacing:.02em}
.op-main{display:flex;flex-direction:column;gap:.22rem;min-width:0}
.op-name{font-size:1.12rem;font-weight:700;color:var(--ink);text-decoration:none}
.op-name:hover{color:var(--accent);text-decoration:none}
.op-rate{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.op-review{font-size:.8rem;color:var(--accent);text-decoration:underline;text-underline-offset:2px}
.best-for{font-size:.82rem;color:var(--muted)}
.op-offer{display:flex;flex-direction:column;gap:.15rem;text-align:right;min-width:9rem}
.op-offer-label{font-size:.64rem;text-transform:uppercase;letter-spacing:.11em;color:var(--muted);font-weight:600}
.op-offer strong{font-size:1.06rem;line-height:1.25;color:var(--accent)}
.op-offer strong.no-offer{color:var(--muted);font-weight:500;font-size:.9rem}
.op-act{display:flex;flex-direction:column;align-items:center;gap:.3rem}
.op-terms{font-size:.66rem;color:var(--muted)}
.stars{color:#e0a92b;letter-spacing:.04em;font-size:.95rem}
.rating-num{font-weight:700;margin-left:.3rem;font-size:.84rem}
.cta{display:inline-block;background:var(--accent);color:#fff!important;text-decoration:none;font-weight:700;font-size:.88rem;padding:.62rem 1.35rem;border-radius:999px;white-space:nowrap;transition:filter .15s}
.cta:hover{filter:brightness(1.08);text-decoration:none}
.op-details{grid-column:1/-1;margin-top:.2rem;border-top:1px solid var(--line);padding-top:.7rem}
.op-details summary{font-size:.8rem;color:var(--ink-soft);cursor:pointer}
.op-details p{font-size:.76rem;color:var(--muted);line-height:1.5;margin:.5rem 0 0}
.advert-note{font-size:.78rem;color:var(--muted);line-height:1.55;margin-top:.4rem}
@media(max-width:760px){
.op-card{grid-template-columns:1.8rem 3.2rem 1fr;gap:.8rem;row-gap:.9rem}
.op-logo{width:3.2rem;height:3.2rem}
.op-offer{grid-column:2/-1;text-align:left;min-width:0}
.op-act{grid-column:1/-1;align-items:stretch}
.op-act .cta{text-align:center}
}
.review-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:1.5rem;margin:1.8rem 0}
.rc-head{display:flex;align-items:center;gap:1rem;flex-wrap:wrap;margin-bottom:1rem}
.rc-name{margin:0 0 .2rem;font-size:1.4rem}
.rc-offer{background:var(--accent-soft);border-radius:var(--radius);padding:.9rem 1rem;margin-bottom:1rem}
.rc-label{display:block;font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);margin-bottom:.25rem}
.rc-offer strong{font-size:1.1rem;display:block}
.rc-facts{display:grid;grid-template-columns:auto 1fr;gap:.4rem 1.2rem;margin:0 0 1.2rem;font-size:.88rem}
.rc-facts dt{color:var(--muted)}
.rc-facts dd{margin:0}
.verified{font-size:.74rem;color:var(--muted);margin:.8rem 0 0}
.proscons{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;margin:1.8rem 0}
.proscons h3{font-size:.95rem;margin:0 0 .5rem}
.proscons ul{margin:0;padding-left:1.1rem;font-size:.92rem}
.pros h3{color:var(--ok,#15803d)}
.cons h3{color:var(--crit,#b3261e)}
@media(max-width:640px){.proscons{grid-template-columns:1fr;gap:1rem}}
