/* ═══ Software app — uses theme variables from main.css ═══ */

.sw-wrap{max-width:1200px;margin:0 auto;padding:2rem 1.25rem 3rem}

/* ── Page header ── */
.sw-hero{margin-bottom:2rem}
.sw-hero h1{font-family:'Sora',sans-serif;font-size:clamp(1.6rem,3vw,2.2rem);margin:0 0 .5rem;color:var(--tx)}
.sw-hero p{color:var(--txm);margin:0;max-width:680px;line-height:1.6}

/* ── List page: card grid ── */
.sw-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1.25rem}
.sw-card{display:flex;flex-direction:column;gap:.9rem;padding:1.4rem;background:var(--sf);
  border:1px solid var(--bd);border-radius:12px;color:var(--tx);text-decoration:none;
  transition:transform .15s,border-color .15s,box-shadow .15s}
.sw-card:hover{transform:translateY(-3px);border-color:var(--ac);box-shadow:var(--card-shadow);color:var(--tx)}
.sw-card-top{display:flex;align-items:center;gap:.85rem}
.sw-card h2{font-size:1.1rem;margin:0;font-weight:600}
.sw-card p{color:var(--txm);font-size:.92rem;line-height:1.55;margin:0;flex:1}
.sw-card-foot{display:flex;align-items:center;justify-content:space-between;font-size:.82rem;color:var(--txm)}
.sw-card-foot .sw-more{color:var(--ac);font-weight:600}

/* ── Icon ── */
.sw-icon{width:48px;height:48px;border-radius:10px;flex-shrink:0;object-fit:cover;
  display:flex;align-items:center;justify-content:center;
  background:rgba(99,102,241,.15);color:var(--ach);font-size:1.3rem}
.sw-icon-lg{width:72px;height:72px;border-radius:14px;font-size:2rem}

/* ── Badges ── */
.sw-badges{display:flex;flex-wrap:wrap;gap:.4rem}
.sw-badge{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .6rem;border-radius:999px;
  font-size:.75rem;font-weight:600;background:var(--input-bg);border:1px solid var(--bd);color:var(--txm)}
.sw-badge-ac{background:rgba(99,102,241,.15);color:var(--ach);border-color:transparent}

/* ── Detail page: sidebar + main ── */
.sw-layout{display:grid;grid-template-columns:260px 1fr;gap:2rem;align-items:start}
.sw-side{position:sticky;top:84px;background:var(--sf);border:1px solid var(--bd);border-radius:12px;padding:1rem}
.sw-side h3{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--txm);margin:.25rem .5rem .75rem}
.sw-side ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.2rem}
.sw-side a{display:flex;align-items:center;gap:.6rem;padding:.55rem .6rem;border-radius:8px;
  color:var(--tx);text-decoration:none;font-size:.9rem}
.sw-side a:hover{background:var(--input-bg)}
.sw-side a.active{background:rgba(99,102,241,.15);color:var(--ach);font-weight:600}
.sw-side .sw-icon{width:28px;height:28px;border-radius:6px;font-size:.8rem}
.sw-side .sw-v{margin-left:auto;font-size:.72rem;color:var(--txm)}
.sw-side .sw-all{margin-top:.6rem;border-top:1px solid var(--bd);padding-top:.6rem}

.sw-main{min-width:0}
.sw-head{display:flex;gap:1.1rem;align-items:center;margin-bottom:1.25rem}
.sw-head h1{font-family:'Sora',sans-serif;font-size:clamp(1.5rem,3vw,2rem);margin:0 0 .4rem;color:var(--tx)}
.sw-lead{color:var(--txm);font-size:1.02rem;line-height:1.6;margin:0 0 1.5rem}

/* ── Download box ── */
.sw-box{background:var(--sf);border:1px solid var(--bd);border-radius:12px;padding:1.4rem;margin-bottom:2rem}
.sw-dl-row{display:flex;flex-wrap:wrap;align-items:center;gap:1rem;margin-bottom:1.25rem}
.sw-btn{display:inline-flex;align-items:center;gap:.55rem;padding:.8rem 1.6rem;border-radius:8px;
  background:var(--ac);color:#fff;font-weight:600;text-decoration:none;font-size:1rem;transition:opacity .15s}
.sw-btn:hover{opacity:.88;color:#fff}
.sw-file-meta{color:var(--txm);font-size:.88rem;line-height:1.5}
.sw-file-meta strong{color:var(--tx);font-weight:600}

.sw-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.75rem;margin:0 0 1.25rem}
.sw-facts div{background:var(--input-bg);border-radius:8px;padding:.65rem .85rem}
.sw-facts dt{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--txm);margin-bottom:.2rem}
.sw-facts dd{margin:0;font-weight:600;color:var(--tx);font-size:.93rem;word-break:break-word}

/* ── SHA-256 ── */
.sw-hash-label{font-size:.8rem;font-weight:600;color:var(--txm);margin-bottom:.4rem;display:flex;align-items:center;gap:.4rem}
.sw-hash{display:flex;align-items:stretch;border:1px solid var(--bd);border-radius:8px;overflow:hidden;background:var(--code-bg)}
.sw-hash code{flex:1;padding:.7rem .85rem;font-family:'JetBrains Mono',monospace;font-size:.82rem;
  color:#e2e8f0;word-break:break-all;line-height:1.5}
.sw-copy{border:0;border-left:1px solid var(--bd);background:transparent;color:#cbd5e1;
  padding:0 1rem;cursor:pointer;font-size:.85rem;white-space:nowrap}
.sw-copy:hover{background:rgba(255,255,255,.06)}
.sw-verify{margin-top:1rem;font-size:.86rem;color:var(--txm)}
.sw-verify summary{cursor:pointer;color:var(--ac);font-weight:600}
.sw-verify pre{background:var(--code-bg);color:#e2e8f0;padding:.7rem .85rem;border-radius:8px;
  font-size:.8rem;overflow-x:auto;margin:.5rem 0}

/* ── Rich text ── */
.sw-section{margin-bottom:2rem}
.sw-section > h2{font-size:1.25rem;margin:0 0 .8rem;color:var(--tx);padding-bottom:.5rem;border-bottom:1px solid var(--bd)}
.sw-rich{color:var(--tx);line-height:1.75;font-size:.98rem}
.sw-rich img{max-width:100%;height:auto;border-radius:8px}
.sw-rich a{color:var(--ac)}
.sw-rich ul,.sw-rich ol{padding-left:1.4rem;margin:.6rem 0}
.sw-rich p{margin:0 0 .8rem}

.sw-empty{text-align:center;padding:3rem 1rem;color:var(--txm);background:var(--sf);
  border:1px dashed var(--bd);border-radius:12px}

/* ── Mobile ── */
@media (max-width:860px){
  .sw-layout{grid-template-columns:1fr}
  .sw-side{position:static;order:2}
  .sw-head{align-items:flex-start}
  .sw-btn{width:100%;justify-content:center}
}
