.sets-page { max-width: 1200px; margin: 110px auto 60px; padding: 24px; color: #25252d; }
.sets-hero { max-width: 760px; margin-bottom: 40px; }
.sets-hero > span { display: inline-block; padding: 6px 12px; background: #25252d; color: white; font-weight: 900; letter-spacing: .12em; transform: rotate(-2deg); }
.sets-hero h1 { margin: 22px 0 16px; font-size: clamp(2.4rem, 6vw, 4.5rem); line-height: 1; }
.sets-hero p { line-height: 1.6; }
.sets-sign-in a { color: inherit; font-weight: 800; }
.sets-controls { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 24px; padding: 14px 18px; border: 2px solid #25252d; border-radius: 10px; background: white; }
.sets-show { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 16px; min-width: 0; margin: 0; padding: 0; border: 0; }
.sets-show legend { float: left; margin-right: 16px; padding: 0; font-weight: 900; }
.sets-show label { display: inline-flex; align-items: center; gap: 6px; font-size: .85rem; font-weight: 700; cursor: pointer; }
.sets-show input { width: 16px; height: 16px; margin: 0; accent-color: #8854d0; }
.sets-show label:has(input:disabled) { opacity: .5; cursor: default; }
.sets-sort { display: flex; align-items: center; gap: 10px; margin-left: auto; font-weight: 900; white-space: nowrap; }
.sets-sort select { max-width: 100%; padding: 7px 10px; border: 2px solid #25252d; border-radius: 6px; background: white; color: inherit; font: inherit; font-size: .85rem; }
.sets-controls :is(input, select):focus-visible { outline: 3px solid #8854d0; outline-offset: 4px; }
.sets-visible-count { margin: 10px 0 24px; color: #625c6d; font-size: .8rem; }
.sets-page [hidden] { display: none !important; }
.sets-category:not([hidden]) ~ .sets-category:not([hidden]) { margin-top: 44px; padding-top: 28px; border-top: 2px dashed #aaa5b2; }
.sets-category-heading { margin-bottom: 22px; }
.sets-category-heading h2 { display: flex; align-items: center; gap: 10px; margin: 0; font-size: 1.6rem; }
.sets-category-heading h2 span { padding: 3px 8px; border: 2px solid #25252d; border-radius: 6px; background: #f4eaff; font-size: .8rem; }
.sets-category-heading p { max-width: 650px; margin: 10px 0 0; color: #625c6d; line-height: 1.6; }
.sets-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); gap: 28px; }
.set-summary { min-width: 0; display: flex; flex-direction: column; padding: 24px; border: 3px solid #25252d; border-radius: 12px; background: white; box-shadow: 6px 6px 0 #25252d; }
.set-summary-size { font-size: .8rem; font-weight: 800; text-transform: uppercase; letter-spacing: .08em; }
.set-summary h3 { margin: 12px 0 28px; font-size: 1.5rem; overflow-wrap: anywhere; }
.set-summary h3 a { color: inherit; text-decoration: none; }
.set-summary h3 a:hover { text-decoration: underline; }
.set-progress { margin-bottom: 22px; }
.set-progress > div { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px; font-size: .85rem; }
.set-progress progress { display: block; width: 100%; height: 14px; margin: 10px 0; border: 2px solid #25252d; border-radius: 0; background: #eee; accent-color: #8854d0; }
.set-progress progress::-webkit-progress-bar { background: #eee; }
.set-progress progress::-webkit-progress-value { background: #8854d0; }
.set-progress progress::-moz-progress-bar { background: #8854d0; }
.set-progress-personal progress { accent-color: #168078; }
.set-progress-personal progress::-webkit-progress-value { background: #168078; }
.set-progress-personal progress::-moz-progress-bar { background: #168078; }
.set-progress p { margin: 0; font-size: .8rem; }
.set-summary-link { display: flex; justify-content: space-between; gap: 12px; margin-top: auto; padding: 12px; border: 2px solid #25252d; background: #9bf6ff; color: #25252d; font-weight: 850; text-decoration: none; }
.sets-page a:focus-visible { outline: 3px solid #8854d0; outline-offset: 4px; }
.sets-empty { padding: 32px; border: 3px dashed #25252d; line-height: 1.6; }
@media (max-width: 560px) { .sets-page { padding: 18px; } .set-summary { padding: 20px; } .sets-sort { width: 100%; margin-left: 0; } .sets-sort select { flex: 1; min-width: 0; } }
