/* worthly.si — the scan overlay and the report blocks it reveals.
   Dark, quiet and honest: the numbers fill in as the work finishes, and a
   cached stage says so instead of stalling for effect. */

html.scanning{overflow:hidden}
.scan{position:fixed;inset:0;z-index:80;display:flex;align-items:center;justify-content:center;
  padding:20px;background:rgba(7,13,32,.82);backdrop-filter:blur(10px) saturate(120%);
  animation:scanIn .22s ease-out both}
.scan[hidden]{display:none}
.scan.out{animation:scanOut .34s ease-in both}
@keyframes scanIn{from{opacity:0}to{opacity:1}}
@keyframes scanOut{from{opacity:1}to{opacity:0}}
.scan-card{width:100%;max-width:660px;max-height:calc(100vh - 40px);overflow:auto;
  background:linear-gradient(150deg,#0A1533 0%,#0B1A3E 55%,#08122C 100%);
  border:1px solid rgba(255,255,255,.10);border-radius:22px;padding:26px 26px 20px;
  box-shadow:0 40px 90px rgba(4,8,20,.55),inset 0 1px 0 rgba(255,255,255,.06);color:#EAF0FF}
.scan-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.scan-kicker{font:600 12px/1 Inter;letter-spacing:.18em;text-transform:uppercase;color:#7FA6FF}
.scan-score-box{text-align:right;line-height:1}
.scan-score{font:700 56px/1 Sora,Inter;letter-spacing:-.04em;color:#fff}
.scan-score-of{font:600 18px/1 Inter;color:#7E93C4;margin-left:2px}
.scan-score-label{display:block;font:600 12px/1.4 Inter;color:#9FB3DC;margin-top:6px;min-height:16px}
.scan-name{font:600 clamp(26px,5vw,40px)/1.1 'JetBrains Mono',monospace;letter-spacing:-.02em;margin:14px 0 16px;color:#fff}
.scan-track{height:8px;border-radius:5px;background:rgba(255,255,255,.10);overflow:hidden}
.scan-track i{display:block;height:100%;width:0;border-radius:5px;
  background:linear-gradient(90deg,#2E6BFF,#22D3EE);transition:width .45s cubic-bezier(.2,.7,.2,1)}
.scan-steps{list-style:none;margin:20px 0 0;padding:0;display:flex;flex-direction:column;gap:2px}
.scan-steps li{display:grid;grid-template-columns:38px 1fr 26px;align-items:center;gap:12px;
  padding:11px 12px;border-radius:12px;opacity:.5;transition:opacity .3s,background .3s}
.scan-steps li[data-state=running]{opacity:1;background:rgba(46,107,255,.12)}
.scan-steps li[data-state=done]{opacity:1}
.scan-ico{width:38px;height:38px;border-radius:11px;display:flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,.06);color:#8FB0FF;flex:0 0 auto}
.scan-ico svg{width:20px;height:20px}
.scan-steps li[data-state=running] .scan-ico{background:linear-gradient(140deg,#2E6BFF,#22D3EE);color:#06122B}
.scan-txt{min-width:0}
.scan-txt b{display:block;font:600 15px/1.3 Inter;color:#fff}
.scan-txt i{display:block;font:400 13px/1.4 Inter;color:#93A7CF;font-style:normal}
.scan-txt .scan-found{display:block;font:500 12.5px/1.45 Inter;color:#7FE7C4;margin-top:3px}
.scan-txt .scan-found.cached{color:#C9B27E}
.scan-state{width:26px;height:26px;display:flex;align-items:center;justify-content:center}
.scan-dot{width:14px;height:14px;border-radius:50%;border:2px solid rgba(255,255,255,.22);display:block}
.scan-steps li[data-state=running] .scan-dot{border-color:rgba(255,255,255,.25);border-top-color:#22D3EE;animation:spin .7s linear infinite}
.scan-steps li[data-state=done] .scan-dot{border:none;background:#22C58B;position:relative}
.scan-steps li[data-state=done] .scan-dot::after{content:"";position:absolute;left:4px;top:1.5px;width:4px;height:8px;
  border:2px solid #06122B;border-top:0;border-left:0;transform:rotate(42deg)}
.scan-steps li[data-state=error] .scan-dot{background:#F5B942;border:none}
@keyframes spin{to{transform:rotate(360deg)}}
.scan-foot{margin:16px 0 0;font:400 13px/1.5 Inter;color:#93A7CF;min-height:38px}
.scan-foot b{color:#EAF0FF;font-weight:600}
.scan-skip{margin-top:10px}
@media(max-width:620px){
  .scan-card{padding:20px 16px 16px;border-radius:18px}
  .scan-score{font-size:44px}
  .scan-steps li{grid-template-columns:32px 1fr 22px;padding:9px 8px;gap:9px}
  .scan-ico{width:32px;height:32px;border-radius:9px}
}

/* ---------- score card ---------- */
/* These cards carry their own padding: the site's generic .card has none, so without
   this the text sits flush against the border. */
.sc-card, .rs-card, .rc-card-x, .rx-card{padding:20px 22px}
.sc-card .sc-head{display:flex;align-items:center;gap:18px;flex-wrap:wrap;padding-bottom:14px;border-bottom:1px solid rgba(31,91,255,.10)}
.sc-num{display:flex;align-items:baseline;gap:2px;font-family:Sora,Inter,sans-serif}
.sc-num b{font:700 44px/1 Sora,Inter;letter-spacing:-.04em;color:var(--brand)}
.sc-num span{font:600 15px/1 Inter;color:var(--muted,#6B7A99)}
.sc-meta{flex:1;min-width:240px}
.sc-meta strong{display:block;font:600 16px/1.35 Inter}
.sc-meta span{display:block;margin-top:4px}
.sc-conf{text-align:right;padding-left:16px;border-left:1px solid rgba(31,91,255,.10);min-width:132px}
.sc-parts{list-style:none;margin:16px 0 0;padding:0;display:flex;flex-direction:column;gap:13px}
.sc-parts li{display:grid;grid-template-columns:146px 130px 62px minmax(0,1fr);align-items:center;gap:12px}
.sc-lab{font:600 13.5px/1.3 Inter}
.sc-bar{height:8px;border-radius:5px;background:rgba(31,91,255,.12);overflow:hidden}
.sc-bar i{display:block;height:100%;border-radius:5px;background:linear-gradient(90deg,#1F5BFF,#22D3EE)}
.sc-pts{font:600 13.5px/1 'JetBrains Mono',monospace;text-align:right}
.sc-why{font-size:12.5px;line-height:1.45;min-width:0}
@media(max-width:860px){
  .sc-conf{text-align:left;border-left:0;padding-left:0;min-width:0;width:100%;border-top:1px solid rgba(31,91,255,.10);padding-top:10px}
  .sc-parts li{grid-template-columns:1fr 78px;grid-template-areas:"lab pts" "bar bar" "why why";gap:6px 10px}
  .sc-lab{grid-area:lab}.sc-pts{grid-area:pts}.sc-bar{grid-area:bar}.sc-why{grid-area:why}
}

/* ---------- range scale ---------- */
.rs-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;padding-bottom:4px}
.rs-track{position:relative;height:12px;margin:26px 0 34px;border-radius:7px;background:rgba(31,91,255,.10)}
.rs-band{position:absolute;top:0;bottom:0;border-radius:7px;background:linear-gradient(90deg,rgba(31,91,255,.35),rgba(34,211,238,.45))}
.rs-mark{position:absolute;top:-8px;transform:translateX(-50%)}
.rs-mark i{display:block;width:3px;height:28px;margin:0 auto;border-radius:2px;background:#0C1733}
.rs-mark b{display:block;margin-top:23px;font:600 12.5px/1 'JetBrains Mono',monospace;white-space:nowrap;transform:translateX(-50%)}
.rs-ends{display:flex;justify-content:space-between;font:500 13px/1.4 Inter;color:var(--muted,#6B7A99)}
.rs-ends b{color:var(--ink,#0C1733)}
@media(max-width:620px){
  .sc-card, .rs-card, .rc-card-x, .rx-card{padding:16px}
  .rs-mark b{font-size:11.5px}
}

/* ---------- small shared bits ---------- */
.pill.tiny{font-size:10.5px;padding:1px 7px;vertical-align:1px}
.good{color:#128A5B;font-weight:600}
.bad{color:#B4432E;font-weight:600}
.rc-card-x .tablewrap{margin-top:10px}
.rx-card .tablewrap{margin-top:10px}
