/* ================================================================
   LifeStyleMod – static/unify.css
   ----------------------------------------------------------------
   GEOMETRY UNIFICATION LAYER (badges/chips/pills + cards)

   ▸ Purpose : the site defines ~68 badge-like classes and ~77
     card-like classes across static/pages-*.css with slightly
     different padding / radius / size. This single shared layer
     normalises their GEOMETRY so they all read as one system.

   ▸ Load order : emitted LAST by templates/head.php — after
     theme.css, base.css, layout.css, components.css, pages.css
     and after every per-page pages-*.css from $extraCss.
     That is why rules added to components.css had no effect.

   ▸ Purely ADDITIVE : no existing rule in any other stylesheet is
     edited or deleted.

   ▸ GEOMETRY ONLY : no `color`, no literal background, no literal
     border-color. Badges encode meaning through colour
     (active / expired / danger / role) and keep their colours.

   ▸ Tokens used — all pre-existing in static/theme.css:
       --r-full        : 9999px
       --r-lg          : 10px
       --fs-xs         : 12px
       --fw-semi       : 600
       --c-surface     : card surface
       --c-border      : card border
       --c-border-hover: card hover border
       --shadow-sm     : card resting shadow
       --shadow-md     : card hover shadow (.pack-card pattern)
       --t-base        : 0.18s ease (.pack-card transition token)
   ================================================================ */

/* ================================================================
   SECTION A — BADGES / CHIPS / PILLS
   ----------------------------------------------------------------
   Mechanically collected from static/*.css: every class DEFINED
   whose name matches badge|chip|pill  -> 68 found.
   Minus containers / structural parts  -> 5 excluded.
   INCLUDED CLASS COUNT: 63
   ================================================================ */
.announce-stat-badge,
.badge,
.badge-android,
.badge-code,
.badge-downloads,
.badge-pc,
.filter-chip,
.hashtag-chip,
.mv-author-role-badge,
.of-badge,
.of-badge-new,
.of-badge-read,
.opp-badge-price,
.oppr-badge-amount,
.owner-badge,
.owner-badge-active,
.owner-badge-danger,
.owner-badge-inactive,
.owner-badge-info,
.owner-badge-warning,
.owner-polls-badge,
.owner-polls-badge-active,
.owner-polls-badge-inactive,
.owner-sms-badge,
.owner-sms-badge-active,
.owner-sms-badge-expired,
.owner-users-badge,
.owner-users-badge-admin,
.owner-users-badge-creator,
.owner-users-badge-owner,
.owner-users-badge-user,
.pack-badge,
.pack-badge-admin,
.pack-badge-creator,
.pack-badge--hot,
.pack-badge--new,
.pack-badge-owner,
.pack-badge-user,
.pack-category-badge,
.pack-creator-role-badge,
.pl-badge,
.pl-badge-active,
.pl-badge-expired,
.pmp-status-badge,
.premium-badge-sales,
.premium-expiry-badge,
.prof-level-badge,
.prof-role-badge,
.prv-badge,
.srv-stat-badge,
.stat-badge,
.stats-item-badge,
.tag-chip,
.tv-author-role-badge,
.tv-badge-admin,
.tv-badge-creator,
.tv-badge-owner,
.tv-badge-user,
.up-hashtag-chip {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 2px 9px;
    border-radius: var(--r-full);
    font-size: var(--fs-xs);
    font-weight: var(--fw-semi);
    line-height: 1.7;
    white-space: nowrap;
    vertical-align: middle;
}

/* ================================================================
   SECTION B — CARDS
   ----------------------------------------------------------------
   Mechanically collected from static/*.css: every class DEFINED
   whose name matches card  -> 77 found.
   Minus sub-parts / containers -> 18 excluded.
   INCLUDED CLASS COUNT: 59

   Hover pattern copied from .pack-card in components.css:
     transition: transform var(--t-base), box-shadow var(--t-base),
                 border-color var(--t-base);
   Only border-color + box-shadow are set on :hover here, so any
   card-specific hover transform/glow in pages-*.css is preserved.
   ================================================================ */
.app-feature-card,
.app-info-card,
.card,
.category-card,
.contact-card,
.creator-card,
.disabled-card,
.feedback-card,
.latest-card,
.mods-cat-card,
.mod-success-card,
.opf-card,
.opp-card,
.oppr-card,
.owner-card,
.owner-polls-poll-card,
.pack-card,
.pack-channel-card,
.pack-detail-card,
.pack-info-card,
.pack-related-card,
.pl-poll-card,
.pmp-purchase-card,
.poll-card,
.pp-destination-card,
.premium-card,
.profile-card,
.prof-pack-card,
.prof-profile-card,
.ref-stat-card,
.result-card,
.server-card,
.srv-server-card,
.stats-card,
.stats-item-card,
.support-card,
.sv-pack-card,
.theme-card,
.tl-tutorial-card,
.top-creator-card,
.top-pack-card,
.transfer-card,
.tutorial-card,
.tv-attachment-card,
.upload-success-card{
    border-radius: var(--r-lg);
    border: 1px solid var(--c-border);
    background: var(--c-surface);
    box-shadow: var(--shadow-sm);
    transition: transform var(--t-base), box-shadow var(--t-base),
                border-color var(--t-base);
}

.app-feature-card:hover,
.app-info-card:hover,
.auth-glass-card:hover,
.card:hover,
.category-card:hover,
.contact-card:hover,
.control-glass-card:hover,
.creator-card:hover,
.disabled-card:hover,
.edit-glass-card:hover,
.feedback-card:hover,
.glass-card:hover,
.latest-card:hover,
.mods-cat-card:hover,
.mod-success-card:hover,
.opf-card:hover,
.opp-card:hover,
.oppr-card:hover,
.ovpp-glass-card:hover,
.owner-card:hover,
.owner-glass-card:hover,
.owner-polls-poll-card:hover,
.pack-card:hover,
.pack-channel-card:hover,
.pack-detail-card:hover,
.pack-info-card:hover,
.pack-related-card:hover,
.pl-poll-card:hover,
.pmp-purchase-card:hover,
.poll-card:hover,
.pp-destination-card:hover,
.pp-glass-card:hover,
.premium-card:hover,
.profile-card:hover,
.prof-pack-card:hover,
.prof-profile-card:hover,
.prv-glass-card:hover,
.ps-glass-card:hover,
.pv-glass-card:hover,
.ref-glass-card:hover,
.ref-stat-card:hover,
.result-card:hover,
.server-card:hover,
.srv-server-card:hover,
.stats-card:hover,
.stats-item-card:hover,
.support-card:hover,
.sv-pack-card:hover,
.tf-glass-card:hover,
.theme-card:hover,
.tl-tutorial-card:hover,
.top-creator-card:hover,
.top-pack-card:hover,
.transfer-card:hover,
.tutorial-card:hover,
.tv-attachment-card:hover,
.up-glass-card:hover,
.upload-glass-card:hover,
.upload-success-card:hover {
    border-color: var(--c-border-hover);
    box-shadow: var(--shadow-md);
}

/* B2) Cards - glass/translucent variants.
   Only radius and shadow are unified here; background and border are
   deliberately NOT set so the translucency (backdrop-filter) survives. */
.auth-glass-card,
.control-glass-card,
.edit-glass-card,
.glass-card,
.ovpp-glass-card,
.owner-glass-card,
.pp-glass-card,
.prv-glass-card,
.ps-glass-card,
.pv-glass-card,
.ref-glass-card,
.tf-glass-card,
.up-glass-card,
.upload-glass-card {
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-sm);
}

.auth-glass-card,
.control-glass-card,
.edit-glass-card,
.glass-card,
.ovpp-glass-card,
.owner-glass-card,
.pp-glass-card,
.prv-glass-card,
.ps-glass-card,
.pv-glass-card,
.ref-glass-card,
.tf-glass-card,
.up-glass-card,
.upload-glass-card:hover {
  box-shadow: var(--shadow-md);
}
