.sw-hero { background: linear-gradient(125deg, var(--sh-primary-dark), var(--sh-primary)); color: #fff; border-radius: var(--sh-radius-lg); padding: clamp(1.5rem, 4vw, 3.5rem); position: relative; overflow: hidden; }
.sw-hero::after { content: "↓"; position: absolute; inset-inline-end: 5%; top: -3rem; font: 900 19rem/1 sans-serif; opacity: .07; pointer-events: none; }
.sw-hero p { opacity: .85; max-width: 650px; line-height: 2; }
.sw-eyebrow { display: inline-block; font-size: .8rem; padding: .35rem .75rem; border: 1px solid #ffffff50; border-radius: 2rem; margin-bottom: 1rem; }
.sw-filter { position: relative; margin-top: -1.2rem; margin-inline: 1rem; z-index: 1; }
.sw-card { display: flex; flex-direction: column; height: 100%; padding: 1.4rem; border: 1px solid var(--sh-border); border-radius: var(--sh-radius-lg); background: var(--sh-surface); transition: box-shadow .2s, transform .2s; }
.sw-card:hover { box-shadow: var(--sh-shadow-md); transform: translateY(-3px); }
.sw-card-top { display: flex; align-items: flex-start; gap: 1rem; margin-bottom: 1rem; }
.sw-icon { width: 64px; height: 64px; border-radius: 16px; object-fit: contain; background: var(--sh-primary-light); flex: 0 0 auto; }
.sw-icon-placeholder { display: grid; place-items: center; color: var(--sh-primary); font-size: 1.9rem; font-weight: 800; }
.sw-icon-lg { width: 96px; height: 96px; border-radius: 24px; }
.sw-summary { color: var(--sh-ink-muted); line-height: 1.9; flex: 1; overflow-wrap: anywhere; }
.sw-pills { display: flex; flex-wrap: wrap; gap: .4rem; }
.sw-pill { font-size: .75rem; padding: .3rem .65rem; border-radius: 2rem; background: var(--sh-surface-2); color: var(--sh-ink-muted); }
.sw-meta { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .5rem; color: var(--sh-ink-muted); font-size: .8rem; padding-block: 1rem; border-top: 1px solid var(--sh-border); margin-top: 1rem; }
.sw-text { white-space: pre-line; overflow-wrap: anywhere; line-height: 2.1; }
.sw-feature-list { padding-inline-start: 1.3rem; line-height: 2.1; }
.sw-download-box { border: 1px solid var(--sh-border); background: var(--sh-surface); border-radius: var(--sh-radius-lg); padding: 1.4rem; height: 100%; }
.sw-hash { display: block; overflow-wrap: anywhere; word-break: break-all; padding: .8rem; margin-top: .7rem; background: var(--sh-surface-2); border-radius: var(--sh-radius-sm); text-align: left; user-select: all; }
.sw-dropzone { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .7rem; min-height: 200px; padding: 2rem 1rem; border: 2px dashed var(--sh-primary); border-radius: var(--sh-radius-lg); background: var(--sh-primary-light); text-align: center; cursor: pointer; }
.sw-dropzone input { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
.sw-dropzone:focus-within { outline: 3px solid var(--sh-accent); outline-offset: 3px; }
.sw-dropzone.sw-dragging { border-style: solid; box-shadow: 0 0 0 5px var(--sh-primary-light); }
.sw-drop-icon { display: grid; place-items: center; width: 48px; height: 48px; border-radius: 50%; background: var(--sh-primary); color: #fff; font-size: 2rem; }
.sw-file-info { display: flex; justify-content: space-between; gap: 1rem; padding: 1rem; margin-top: 1rem; border: 1px solid var(--sh-border); border-radius: var(--sh-radius); overflow-wrap: anywhere; }
.sw-file-info[hidden], .sw-progress-panel[hidden] { display: none; }
.sw-progress-panel { border: 1px solid var(--sh-border); border-radius: var(--sh-radius); padding: 1.2rem; }
.sw-progress { height: 12px; background: var(--sh-surface-2); border-radius: 10px; overflow: hidden; direction: ltr; }
.sw-progress > div { width: 0; height: 100%; background: linear-gradient(90deg, var(--sh-primary), #299e8d); transition: width .15s; border-radius: inherit; }
.sw-release-history summary { cursor: pointer; font-weight: 600; padding-block: 1rem; }
@media (prefers-reduced-motion: reduce) { .sw-card, .sw-progress > div { transition: none; } .sw-card:hover { transform: none; } }
@media (max-width: 575.98px) { .sw-filter { margin-inline: 0; } .sw-icon-lg { width: 72px; height: 72px; } .sw-file-info { flex-direction: column; } }
