/* llmrank.top — site styles */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
:root{
  --bg:#ffffff;
  --bg-soft:#f6f7f9;
  --bg-elev:#ffffff;
  --fg:#0d0f12;
  --fg-mute:#5a6573;
  --fg-dim:#8b95a3;
  --border:#e6e8ec;
  --border-strong:#d2d6dd;
  --accent:#2f6fed;
  --accent-soft:#e8efff;
  --good:#138a52;
  --warn:#a96b00;
  --danger:#c5322a;
  --gold:#b78a00;
  --silver:#7c8593;
  --bronze:#a06432;
  --row-hover:#f0f3f7;
  --shadow-sm:0 1px 2px rgba(13,15,18,.05);
  --shadow:0 4px 14px rgba(13,15,18,.08);
  --radius:10px;
  --radius-sm:6px;
  --maxw:1240px;
  --mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono",monospace;
  --sans:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,"Helvetica Neue",Arial,"Noto Sans","PingFang SC","Microsoft YaHei",sans-serif;
}
@media (prefers-color-scheme:dark){
  :root{
    --bg:#0b0d10;
    --bg-soft:#11141a;
    --bg-elev:#13171e;
    --fg:#e8ecf3;
    --fg-mute:#a7b1c1;
    --fg-dim:#74808f;
    --border:#1f242d;
    --border-strong:#2a313c;
    --accent:#6aa2ff;
    --accent-soft:#15223d;
    --good:#3ad58c;
    --warn:#f5b955;
    --danger:#f37b73;
    --gold:#e9c14b;
    --silver:#aab2bf;
    --bronze:#d99466;
    --row-hover:#171c25;
    --shadow-sm:0 1px 2px rgba(0,0,0,.4);
    --shadow:0 4px 14px rgba(0,0,0,.35);
  }
}

html,body{margin:0;padding:0}
body{
  background:var(--bg);
  color:var(--fg);
  font:15px/1.55 var(--sans);
  font-feature-settings:"ss01","cv01","tnum";
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  min-height:100dvh;
  display:flex;flex-direction:column;
}
main{flex:1 0 auto}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 20px}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3{margin:0 0 .4em;line-height:1.2;font-weight:700;letter-spacing:-.01em}
h1{font-size:clamp(28px,4.2vw,44px);letter-spacing:-.02em}
h2{font-size:clamp(20px,2.6vw,26px)}
p{margin:0 0 .9em}
.muted{color:var(--fg-mute)}
.small{font-size:13px}
.skip{position:absolute;left:-9999px}
.skip:focus{left:8px;top:8px;background:var(--accent);color:#fff;padding:8px 12px;border-radius:6px;z-index:100}

/* Header */
header.site{
  position:sticky;top:0;z-index:50;
  background:color-mix(in srgb,var(--bg) 88%,transparent);
  backdrop-filter:saturate(160%) blur(10px);
  border-bottom:1px solid var(--border);
}
header.site .wrap{display:flex;align-items:center;justify-content:space-between;gap:24px;padding-top:12px;padding-bottom:12px}
.brand{display:flex;align-items:center;gap:8px;font-weight:700;letter-spacing:-.02em;font-size:17px;color:var(--fg)}
.brand:hover{text-decoration:none}
.logo{display:inline-grid;place-items:center;width:24px;height:24px;background:var(--accent);color:#fff;border-radius:6px;font-size:13px;font-weight:900;transform:rotate(0deg)}
.tld{color:var(--fg-mute);font-weight:500}
header nav{display:flex;gap:18px;flex-wrap:wrap}
header nav a{color:var(--fg-mute);font-weight:500;font-size:14px}
header nav a:hover{color:var(--fg);text-decoration:none}

/* Hero */
.hero{padding:48px 0 24px}
.hero h1{margin-top:.1em}
.hl{background:linear-gradient(90deg,var(--accent),#9b6aff);-webkit-background-clip:text;background-clip:text;color:transparent}
.tagline{font-size:clamp(15px,1.7vw,18px);color:var(--fg-mute);max-width:62ch}
.meta-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.badge{
  display:inline-flex;align-items:center;gap:6px;
  background:var(--bg-soft);border:1px solid var(--border);
  color:var(--fg-mute);font-size:13px;
  padding:5px 10px;border-radius:999px;
}
.badge.ok{color:var(--good);border-color:color-mix(in srgb,var(--good) 30%,var(--border))}
.badge.try-cta{
  color:#fff;background:var(--accent);border-color:var(--accent);
  font-weight:600;text-decoration:none;
  transition:filter .15s ease, transform .15s ease;
}
.badge.try-cta:hover{filter:brightness(1.08);transform:translateY(-1px)}

/* Controls */
.controls{padding:16px 0 8px;position:sticky;top:53px;z-index:40;background:var(--bg);border-bottom:1px solid var(--border)}
.controls .wrap{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
#q{
  flex:1 1 240px;min-width:0;
  padding:9px 12px;font:14px var(--sans);
  background:var(--bg-soft);color:var(--fg);
  border:1px solid var(--border);border-radius:8px;
  outline:none;
}
#q:focus{border-color:var(--accent);background:var(--bg-elev);box-shadow:0 0 0 3px var(--accent-soft)}
.chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.chips.secondary{margin-left:auto}
.chips-label{font-size:13px;color:var(--fg-dim);margin-right:4px}
.chip{
  font:500 13px var(--sans);
  background:var(--bg-soft);color:var(--fg-mute);
  border:1px solid var(--border);
  padding:6px 11px;border-radius:999px;cursor:pointer;
  transition:background .12s,color .12s,border-color .12s;
}
.chip:hover{color:var(--fg);border-color:var(--border-strong)}
.chip.on{background:var(--accent-soft);color:var(--accent);border-color:color-mix(in srgb,var(--accent) 35%,var(--border))}

/* Board */
.board{padding:18px 0 36px}
.board .wrap{padding-left:0;padding-right:0;max-width:none}
.board-head,.row{
  display:grid;
  grid-template-columns:46px minmax(220px,1.6fr) 78px 70px 60px 60px 60px 60px 60px 110px 76px 90px;
  gap:0;
  align-items:center;
  padding:0 max(20px,calc((100vw - var(--maxw))/2));
}
.board-head{
  position:sticky;top:104px;z-index:30;
  background:var(--bg-soft);
  border-top:1px solid var(--border);
  border-bottom:1px solid var(--border);
  font:600 11px/1 var(--sans);
  letter-spacing:.06em;text-transform:uppercase;
  color:var(--fg-dim);
  padding-top:10px;padding-bottom:10px;
}
.board-head>span{padding:0 6px}
.col-rank{text-align:center}
.col-score,.col-arena,.col-mmlu,.col-gpqa,.col-math,.col-code,.col-swe{text-align:right;font-variant-numeric:tabular-nums}
.col-price{text-align:right}
.col-ctx{text-align:right}
.col-try{text-align:right}
.mute{color:var(--fg-dim);font-weight:500}

.rows{display:flex;flex-direction:column}
.row{
  border-bottom:1px solid var(--border);
  padding-top:14px;padding-bottom:14px;
  font-size:14px;
  transition:background .12s;
}
.row:hover{background:var(--row-hover)}
.row>*{padding:0 6px;min-width:0}
.row .rank{
  text-align:center;font:700 14px var(--mono);color:var(--fg-mute);
  font-variant-numeric:tabular-nums;
}
.row .rank.top1{color:var(--gold)}
.row .rank.top2{color:var(--silver)}
.row .rank.top3{color:var(--bronze)}
.row .model{display:flex;align-items:center;gap:10px;min-width:0}
.row .avatar{
  flex:none;width:30px;height:30px;border-radius:8px;
  display:grid;place-items:center;
  background:var(--bg-soft);border:1px solid var(--border);
  font:700 11px/1 var(--mono);color:var(--fg-mute);text-transform:uppercase;
}
.row .name{display:flex;flex-direction:column;min-width:0}
.row .name a{color:var(--fg);font-weight:600;letter-spacing:-.01em;line-height:1.25;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row .name a:hover{color:var(--accent);text-decoration:none}
.row .name small{color:var(--fg-dim);font-size:12px;display:flex;gap:6px;align-items:center}
.row .name small .pill{
  border:1px solid var(--border);border-radius:4px;
  padding:0 5px;font-size:11px;color:var(--fg-mute);
}
.row .name small .pill.open{color:var(--good);border-color:color-mix(in srgb,var(--good) 35%,var(--border))}
.row .score{
  text-align:right;font:700 14px var(--mono);font-variant-numeric:tabular-nums;
  color:var(--fg);
}
.row .bench{text-align:right;font:500 13px var(--mono);font-variant-numeric:tabular-nums;color:var(--fg-mute)}
.row .bench.na{color:var(--fg-dim);font-style:italic}
.row .price{
  text-align:right;font:500 13px var(--mono);font-variant-numeric:tabular-nums;color:var(--fg-mute);
  white-space:nowrap;
}
.row .ctx{text-align:right;font:500 13px var(--mono);color:var(--fg-mute)}
.row .try{text-align:right}
.row .try a{
  display:inline-block;font:600 12px var(--sans);
  background:var(--accent);color:#fff;
  padding:6px 10px;border-radius:6px;letter-spacing:.01em;
}
.row .try a:hover{filter:brightness(1.08);text-decoration:none}

.empty{text-align:center;color:var(--fg-mute);padding:40px 20px}

/* Provider colour cues */
.avatar.openai{background:#10a37f1a;color:#10a37f;border-color:#10a37f33}
.avatar.anthropic{background:#cc785c1a;color:#cc785c;border-color:#cc785c33}
.avatar.google{background:#4285f41a;color:#4285f4;border-color:#4285f433}
.avatar.meta{background:#1877f21a;color:#1877f2;border-color:#1877f233}
.avatar.deepseek{background:#4d6bfe1a;color:#4d6bfe;border-color:#4d6bfe33}
.avatar.alibaba{background:#ff6a001a;color:#ff6a00;border-color:#ff6a0033}
.avatar.mistral{background:#ff70001a;color:#ff7000;border-color:#ff700033}
.avatar.xai{background:#9991ff1a;color:#9991ff;border-color:#9991ff33}
.avatar.cohere{background:#39594d1a;color:#39594d;border-color:#39594d33}
.avatar.microsoft{background:#5e5e5e1a;color:#5e5e5e;border-color:#5e5e5e33}

/* Score colour ramp */
.score.s90{color:var(--good)}
.score.s80{color:#41b67a}
.score.s70{color:#9aa83a}
.score.s60{color:var(--warn)}
.score.s50{color:#c97744}

/* Ad / sponsor slot */
.adslot{padding:12px 20px}
.ad-placeholder{
  border:1px dashed var(--border-strong);
  background:var(--bg-soft);
  border-radius:var(--radius);
  padding:18px 22px;color:var(--fg-mute);
  display:flex;flex-direction:column;gap:4px;
}
.ad-placeholder strong{color:var(--fg)}

/* Info */
.info{padding:32px 20px 8px}
.info{max-width:880px}
.bench-list{list-style:none;padding:0;margin:14px 0 18px;display:grid;gap:10px}
.bench-list li{
  display:grid;grid-template-columns:160px 60px 1fr;gap:14px;align-items:baseline;
  padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--bg-soft);
}
.bench-list li b{font-size:14px}
.bench-list li .w{font:600 12px var(--mono);color:var(--fg-dim);text-align:right}
.bench-list li span:last-child{color:var(--fg-mute);font-size:13px;line-height:1.45}

/* CTA */
.cta{padding:18px 20px 48px}
.cta-card{
  border:1px solid var(--border);background:var(--bg-soft);
  border-radius:var(--radius);padding:24px 24px;max-width:640px;margin:0 auto;
}
.cta-card h2{margin-bottom:.2em}
.newsletter{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.newsletter input{
  flex:1 1 240px;min-width:0;padding:11px 14px;font:14px var(--sans);
  background:var(--bg);color:var(--fg);
  border:1px solid var(--border);border-radius:8px;outline:none;
}
.newsletter input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.newsletter button{
  padding:11px 18px;font:600 14px var(--sans);
  background:var(--accent);color:#fff;border:0;border-radius:8px;cursor:pointer;
}
.newsletter button:hover{filter:brightness(1.08)}

/* Footer */
footer.site{border-top:1px solid var(--border);padding:24px 0;margin-top:24px;color:var(--fg-mute)}
footer.site .wrap{display:flex;flex-direction:column;gap:6px}
footer.site a{color:var(--fg-mute)}

/* Compare page */
.compare{padding:32px 0}
.compare-grid{display:grid;grid-template-columns:1fr auto 1fr;gap:16px;align-items:start;margin-top:18px}
.compare .vs{font:700 22px var(--mono);color:var(--fg-dim);align-self:center}
.compare select{
  width:100%;padding:10px 12px;font:14px var(--sans);
  background:var(--bg-soft);color:var(--fg);
  border:1px solid var(--border);border-radius:8px;
}
.compare-card{border:1px solid var(--border);background:var(--bg-soft);border-radius:var(--radius);padding:20px;margin-top:12px}
.compare-table{width:100%;border-collapse:collapse;margin-top:14px}
.compare-table th,.compare-table td{padding:10px 12px;border-bottom:1px solid var(--border);text-align:left;font-size:14px}
.compare-table th{font:600 12px var(--sans);text-transform:uppercase;letter-spacing:.06em;color:var(--fg-dim)}
.compare-table td.num{font-family:var(--mono);font-variant-numeric:tabular-nums;text-align:right}
.compare-table td.win{color:var(--good);font-weight:700}
.compare-table td.lose{color:var(--fg-mute)}

/* Model detail page */
.model-page{padding:32px 0}
.model-head{display:flex;flex-wrap:wrap;gap:18px;align-items:center;margin-bottom:8px}
.model-head .avatar{width:54px;height:54px;border-radius:12px;font-size:16px}
.kv-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin:18px 0}
.kv{background:var(--bg-soft);border:1px solid var(--border);border-radius:8px;padding:12px 14px}
.kv .k{font:600 11px var(--sans);text-transform:uppercase;letter-spacing:.06em;color:var(--fg-dim)}
.kv .v{font:700 17px var(--mono);font-variant-numeric:tabular-nums;color:var(--fg)}

/* Responsive: mobile uses card layout */
@media (max-width:900px){
  header.site .wrap{gap:10px}
  .controls{position:static;top:auto}
  .board-head{display:none}
  .row{
    grid-template-columns:46px 1fr auto;
    grid-template-areas:
      "rank model try"
      ".    bench bench"
      ".    price price";
    row-gap:8px;
    padding:14px 20px;
  }
  .row .rank{grid-area:rank}
  .row .model{grid-area:model}
  .row .try{grid-area:try}
  .row .bench-cells{
    grid-area:bench;display:flex;flex-wrap:wrap;gap:6px 10px;font:500 12px var(--mono);color:var(--fg-mute);
  }
  .row .bench-cells span{display:inline-flex;gap:4px;align-items:baseline}
  .row .bench-cells label{color:var(--fg-dim);font-size:10px;text-transform:uppercase;letter-spacing:.06em}
  .row .bench{display:none}
  .row .price-cell{grid-area:price;font:500 12px var(--mono);color:var(--fg-mute)}
  .row .price{display:none}
  .row .ctx{display:none}
  .compare-grid{grid-template-columns:1fr;gap:8px}
  .compare .vs{align-self:start}
}

/* /tools/api-cost-calculator.html */
.cost-form{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end;margin-top:18px}
.cost-form label{display:flex;flex-direction:column;gap:6px;font:600 12px var(--sans);text-transform:uppercase;letter-spacing:.06em;color:var(--fg-dim)}
.cost-form input[type=number]{
  width:200px;padding:10px 12px;font:500 16px var(--mono);font-variant-numeric:tabular-nums;
  background:var(--bg-soft);color:var(--fg);
  border:1px solid var(--border);border-radius:8px;
}
.cost-form input[type=number]:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}
.cost-form .presets{display:flex;flex-wrap:wrap;gap:8px;margin-left:auto}
.cost-form .presets button{
  padding:8px 14px;font:600 12px var(--sans);
  background:var(--bg-soft);color:var(--fg-mute);
  border:1px solid var(--border);border-radius:999px;cursor:pointer;
  transition:background .15s, color .15s, border-color .15s;
}
.cost-form .presets button:hover{background:var(--row-hover);color:var(--fg)}
.cost-form .presets button.on{background:var(--accent);color:#fff;border-color:var(--accent)}
.cost-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.cost-table{min-width:920px}
.cost-table th[data-sort]{cursor:pointer;user-select:none}
.cost-table th[data-sort]:hover{color:var(--accent)}
.cost-table tbody tr:hover{background:var(--row-hover)}
@media (max-width:700px){
  .cost-form input[type=number]{width:100%}
  .cost-form .presets{margin-left:0;width:100%}
}
