UserStyles.world – Wide Compact [Ath]

Wide compact layout for UserStyles.world with extras. Supports all pages. Many configurable options: page width, form column width, fixed toolbar, fonts etc.

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

/* ==UserStyle==
@name           UserStyles.world – Wide Compact [Ath]
@namespace      athari
@version        1.2.0
@description    Wide compact layout for UserStyles.world with extras. Supports all pages. Many configurable options: page width, form column width, fixed toolbar, fonts etc.
@author         Athari (https://github.com/Athari)
@homepageURL    https://github.com/Athari/AthariUserCSS
@supportURL     https://github.com/Athari/AthariUserCSS/issues
@license        MIT
@preprocessor   default
@var            number   ath-page-thumbs-width  "Page max width (thumbnails)" [10000, 1000, 1000000, 20, 'px']
@var            number   ath-page-width         "Page max width (content)"    [2000, 1000, 4000, 20, 'px']
@var            number   form-max-width         "Form column width"           [600, 400, 900, 20, 'px']
@var            number   card-min-width         "Thumbnail width"             [300, 180, 400, 10, 'px']
@var            select   ath-thumb-fit          "Thumbnail fit"               ["contain:Contain*", "cover:Cover", "fill:Fill", "scale_down:Scale down"]
@var            select   ath-resize-preview     "Resize preview on"           ["never:Never", "hover:Hover", "active:Click*"]
@var            checkbox ath-fixed-toolbar      "Fixed toolbar"               1
@var            checkbox ath-show-empty         "Show empty sections"         0
@var            checkbox ath-show-footer        "Show footer"                 1
@var            checkbox ath-show-external-link "Show 🔗 on external links"   1
@var            text     font-sans              "Font - Sans-serif"           "Segoe UI, Inter, -apple-system, Roboto, Helvetica, Arial, Droid Sans, sans-serif"
@var            text     font-mono              "Font - Monospace"            "Cascadia Code, Iosevka, Fira Code, Fira Mono, Droid Mono, Ubuntu Mono, Monaco, monospace"
@var            text     font-emoji             "Font - Emoji"                "Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol"
==/UserStyle== */

@-moz-document domain("userstyles.world") {
  :root {
    --bg-a: light-dark(#fff, #000);
    --bg-0: light-dark(#eee, #111);
    --layout-max-width: var(--ath-page-thumbs-width);
  }

  @container style(--ath-thumb-fit: scale_down) { body { --ath-thumb-fit: scale-down } }

  select.Form-select, input:not([type=checkbox], [type=radio]) {
    padding: 3px 10px !important;
    min-height: 0;
    min-width: 200px;
  }
  h1 {
    font-size: 1.3rem !important;
  }
  h2 {
    text-decoration: none !important;
    font-size: 1.2rem;
  }

  .md:not(#\0) {
    font-size: 0.95rem;
    line-height: 1.3;
    max-height: none;
    :not(a) {
      font-size: inherit;
      line-height: 1.3;
      color: var(--fg-2);
    }
    p, li {
      margin: 0.3rem 0;
    }
    code, pre {
      font-size: 0.9rem;
    }
    :is(h1, h2, h3, h4, h5, h6) {
      margin: 0.4em 0 0.3em;
    }
    h1 {
      font-size: 1.6rem !important;
    }
    h2 {
      font-size: 1.4rem !important;
    }
    h3 {
      font-size: 1.2rem !important;
    }
    h4 {
      font-size: 1.1rem !important;
    }
    h5 {
      font-size: 1.0rem !important;
    }
    h6 {
      font-size: 0.9rem !important;
    }
  }

  body {
    display: flex !important;
    flex-flow: column !important;
    min-height: 100vh;
    padding: 0 !important;
    overflow: hidden scroll;
    font-size: 15px;
  }
  @container style(--ath-show-external-link: 0) {
    a:is([href^='/link/'], [href^='http'])::after {
      content: unset;
    }
  }
  @container style(--ath-show-external-link: 1) {
    a:is([href^='/link/'], [href^='http'])::after {
      content: " 🔗";
      color: #000a;
      vertical-align: initial;
    }
  }
  #navbar, .navbar {
    position: static;
    display: flex;
    flex-flow: row;
    align-items: center;
    justify-content: space-between;
    max-width: none;
    padding: 0 20px;
    background: var(--bg-0);
    border: solid 1px var(--bg-2);
    border-width: 0 0 1px 0;
    box-shadow: 0 0 4px light-dark(#0008, #000);
    .menu {
      display: contents;
      .Dropdown {
        display: flex;
        flex-flow: row;
        gap: 20px;
        padding: 2px;
        .btn {
          display: none;
        }
        ul {
          display: flex;
          flex-flow: row;
          li {
            margin: 0;
            a {
              padding: 7px 10px;
            }
          }
        }
      }
    }
    .wrapper /*old toolbar layout*/ {
      padding: 2px 0;
      display: flex;
      align-items: center;
      > a {
        padding: 0;
      }
      li {
        &:has(a[href^="/user/"]) {
          margin-left: auto;
        }
        a {
          margin: 0;
          padding: 5px 10px;
          text-decoration: none;
        }
      }
      form {
        margin: 0;
        padding: 0;
        max-width: 16em;
        input {
          margin: 0 !important;
          background: rgb(from var(--bg-1) r g b / 0.3);
          &:focus {
            background: rgb(from var(--bg-1) r g b / 0.7);
          }
          &::placeholder {
            color: var(--fg-3);
          }
          &::-webkit-search-cancel-button {
            cursor: pointer;
            margin: 0 24px 0 0;
            opacity: 0.6;
          }
        }
        button {
          margin: 0 !important;
          right: 0;
          background: rgb(from var(--bg-1) r g b / 0.4);
        }
      }
    }
  }
  @container style(--ath-fixed-toolbar: 1) {
    #navbar, .navbar {
      position: fixed;
      inset: 0 0 auto 0;
      z-index: 1000;
      background: rgb(from var(--bg-0) r g b / 0.6);
      border-color: rgb(from var(--bg-2) r g b / 0.6);
      backdrop-filter: brightness(1.5) saturate(3) blur(10px);
      .menu a:hover {
        background: rgb(from var(--bg-5) r g b / 0.3);
      }
    }
    body {
      padding-top: calc(1rem + 25px) !important;
    }
  }
  main#content {
    flex: 1;
    display: flex !important;
    gap: 0;
    min-height: 0;
    margin: 0 0 20px 0;
    padding: 0 !important;
    section:has(h1):not([id]) /*header*/ {
      display: flex;
      flex-flow: row wrap;
      margin: 5px;
      gap: 5px 20px;
      align-items: baseline;
      p {
        margin: 0;
      }
    }
    section:has(h1) + section:not([class]):not([id]):has(.grid.flex .card) /*main after header*/ {
      margin: calc(0px - 1.3rem - 12px) 0 0 0;
    }
    .grid.flex /*style list*/ {
      display: grid;
      grid-template-columns: repeat(auto-fill, minmax(var(--card-min-width), 1fr));
      justify-content: space-between;
      gap: 10px;
      margin: 10px 0;
      .card.col {
        display: subgrid;
        margin: 0;
        picture img {
          background: #000;
          object-fit: var(--ath-thumb-fit);
          object-position: center;
        }
        * {
          font-size: 0.8rem;
        }
        .card-body {
          display: flex;
          flex-flow: row wrap;
          padding: 4px 8px;
          align-items: baseline;
          > small {
            span {
              font-size: 0;
            }
            order: 3;
            width: auto;
            margin: 0 0 0 auto;
          }
          > a {
            order: 1;
            font-size: 0.95rem;
            font-weight: 500;
          }
          > span {
            order: 2;
            width: auto;
          }
        }
        .card-footer {
          padding: 4px 8px;
        }
      }
    }
    &:has(#preview) /*style page*/ {
      max-width: var(--ath-page-width);
      margin: 0 auto !important;
      padding: 0 !important;
      #preview {
        --ath-resize-preview-enabled: 0;
        --ath-resize-preview-cursor: default;
        @container style(--ath-resize-preview: hover) {
          &:has(.card:hover) {
            --ath-resize-preview-enabled: 1;
          }
        }
        @container style(--ath-resize-preview: active) {
          & {
            --ath-resize-preview-cursor: pointer;
          }
          &:has(.card:active) {
            --ath-resize-preview-enabled: 1;
          }
        }
        position: relative;
        display: flex !important;
        flex-flow: row;
        gap: 20px;
        align-items: baseline;
        margin: 10px 0;
        padding: 0;
        h1 {
          margin: 0 auto 0 20px !important;
        }
        p {
          color: var(--fg-3);
        }
        p:has(code) {
          margin: 0 20px 0 0;
        }
        p:not(:has(code)) {
          text-align: center;
        }
        .card {
          position: absolute;
          inset: calc(3.3rem + 41px) 50% auto auto;
          min-width: 0;
          margin: 0 0 0 20px;
          display: flex;
          flex-flow: column;
          z-index: 100;
          font-size: 0;
          cursor: var(--ath-resize-preview-cursor);
          .screenshot {
            padding: 0;
            .blurred {
              display: none;
            }
            picture {
              position: static;
              display: block;
            }
          }
        }
        @container style(--ath-resize-preview-enabled: 1) {
          .card {
            right: auto;
            left: 0;
            min-width: calc(50% - 20px);
            max-width: calc(100vw - 50px);
            picture {
              text-align: right;
            }
          }
        }
      }
      .header {
        padding: 0 20px !important;
      }
      section {
        margin: 0;
        &[id]:not(#preview) {
          display: inline-block;
          width: fit-content;
          max-width: calc(min(50vw - 40px, var(--ath-page-width) / 2));
          margin: 10px 20px 0 calc(50% + 10px);
          padding: 3px 10px;
          background: var(--bg-2);
          border: solid 1px var(--bg-3);
          border-radius: 10px;
        }
        &#stats {
          position: absolute;
          inset: 140px calc(50vw - min(50vw, var(--ath-page-width) / 2 + 10px)) auto auto;
          h2 + p {
            height: 2lh;
            line-height: 1.3;
            text-align: right;
            overflow: clip;
          }
          a {
            display: block;
          }
        }
        &:is(#details, #stats) {
          p {
            margin: 0;
            font-size: 0.95rem;
            color: var(--fg-1);
            &:not(:has(.minw)) {
              color: var(--fg-5);
            }
            .minw {
              color: var(--fg-3);
            }
          }
        }
        @supports (position-anchor: --a) {
          &#details {
            anchor-name: --ath-anchor-details;
          }
          &#stats {
            position-anchor: --ath-anchor-details;
            left: anchor(right);
            top: anchor(top);
            height: anchor-size(height);
            bottom: anchor(bottom);
            margin: 0 0 0 10px !important;
          }
        }
        &#code {
          order: 100;
          max-width: calc(min(100vw, var(--ath-page-width)) - 60px) !important;
          margin-inline: auto 20px !important;
          &:hover {
            z-index: 100;
          }
          .Style-source {
            border: none;
          }
          pre {
            position: static;
            font-size: 0.8rem;
            height: 80vh;
            white-space: pre-wrap;
            overflow-wrap: break-word;
            text-align: left;
            border: none;
          }
        }
        @supports (position-anchor: --a) {
          &#reviews {
            anchor-name: --ath-anchor-reviews;
          }
          &#preview .card {
            anchor-name: --ath-anchor-preview;
          }
          &#code {
            anchor-name: --ath-anchor-code;
            position: absolute;
            top: max(anchor(--ath-anchor-preview bottom), anchor(--ath-anchor-reviews bottom));
            left: 0;
            right: 0;
            margin-inline: auto !important;
          }
        }
        &:is(#notes, #description, #reviews) {
          width: calc(var(--ath-page-width) / 2 - 30px) !important;
          &:has(i:nth-child(2)):not(:has(i + *)) {
            i {
              color: var(--fg-4);
            }
          }
        }
        @container style(--ath-show-empty: 0) {
          &:is(#notes, #description):has(i:nth-child(2)):not(:has(i + *)) {
            display: none !important;
          }
        }
        #share {
          max-width: none;
        }
        h2 {
          font-size: 1rem;
          margin: 0;
        }
      }
    }
    &:has(#password) /*settings page*/ {
      display: block !important;
      margin-inline: auto !important;
      column-width: var(--form-max-width);
      column-gap: 20px;
      column-fill: balance;
      section {
        break-inside: avoid;
        > :is(h2, p) {
          break-after: avoid;
          .minw {
            color: var(--fg-3);
          }
        }
        > form {
          break-before: avoid;
        }
        .Form-box {
          display: flex;
          flex-flow: row wrap;
          align-items: flex-end;
          gap: 10px;
          padding: 10px 12px 14px;
          &:has(.checkbox.iflex) {
            justify-content: space-between;
            label {
              margin: 0;
            }
          }
          > label {
            margin: 0;
          }
          .Form-section {
            flex: 1;
            display: flex;
            flex-flow: row wrap;
            align-items: baseline;
            gap: 0 20px;
            margin: 0;
            &:has(#current-password) {
              flex: 100%;
            }
            i {
              margin: 0 0 0 auto;
            }
            input {
              width: 100%;
            }
          }
          .Form-control {
            margin: 0;
            width: 100%;
          }
          button[type=submit] {
            margin-right: 100px;
          }
        }
      }
      #welcome {
        column-span: all;
      }
    }
    &:has(#details .joined):not(:has(#password)) /*profile page*/ {
      display: grid !important;
      grid-template-areas:
        "detail  bio     links  "
        "styles  styles  styles "
        "reviews reviews reviews";
      grid-template-columns: 1fr auto 1fr;
      grid-template-rows: auto 1fr;
      gap: 10px;
      #details {
        grid-area: detail;
        justify-self: flex-end;
      }
      #biography {
        grid-area: bio;
      }
      #links {
        grid-area: links;
        justify-self: flex-start;
        div {
          display: flex;
          gap: 10px;
          flex-flow: column;
        }
      }
      #styles {
        grid-area: styles;
        margin-bottom: auto;
      }
      .reviews {
        grid-area: reviews;
        columns: 30rem;
        column-gap: 1em;
        article {
          break-inside: avoid;
        }
      }
      section:not(#styles) {
        width: auto;
        margin: 0;
        h1, h2 {
          margin: 0 0 10px 0;
        }
        p {
          margin: 0;
          .minw {
            color: var(--fg-3);
          }
        }
      }
    }
    article.docs.md /*help docs*/ {
      max-width: var(--ath-page-width);
    }
  }
  footer.Footer {
    background: var(--bg-0);
    margin: 10px 0 0 0;
    .Footer-wrapper {
      display: flex;
      flex-flow: column;
      padding: 15px 20px;
      margin: 0;
      .Footer-list {
        display: flex;
        flex-flow: row;
        gap: 20px;
        margin: 2px 0;
        padding: 2px 10px;
        &.half /*about line*/ {
          justify-content: space-between;
          order: 3;
          color: var(--fg-5);
        }
        &:not(.half) {
          -border-bottom: solid 1px var(--bg-2);
        }
        &:nth-child(3) {
          background: var(--bg-1);
        }
        li {
          padding: 0;
          margin: 0;
          a, b {
            padding: 0;
            margin: 0;
          }
          b {
            color: var(--fg-2);
          }
        }
        .about {
          max-width: none !important;
        }
        li:has(.copyright) {
          margin-left: auto;
        }
      }
    }
    @supports (position-anchor: --a) {
      :has(section#preview) & {
        position: absolute;
        top: anchor(--ath-anchor-code bottom);
        left: 0;
        right: 0;
      }
    }
  }
  @container style(--ath-show-footer: 0) {
    footer.Footer {
      display: none;
    }
  }

  :is(form, .form-wrapper):not(.Form) {
    max-width: calc(100vw - 50px);
    display: block;
    margin-inline: 15px !important;
    column-width: var(--form-max-width);
    column-gap: 10px;
    column-fill: balance;
    label, i {
      break-after: avoid;
    }
    input {
      break-before: avoid;
    }
    button[type=submit] {
      column-span: all;
      margin: 10px auto 0;
    }
  }
}