/* ═══════════════════════════════════════════════════════   CSS Variables & Reset   ═══════════════════════════════════════════════════════ */:root {    --bg: #0d1117;    --surface: #161b22;    --border: #30363d;    --text: #c9d1d9;    --text-secondary: #8b949e;    --accent: #58a6ff;    --accent-hover: #79c0ff;    --green: #3fb950;    --orange: #d2991d;    --red: #f85149;    --purple: #a371f7;    --cyan: #39d2c0;    --card-shadow: 0 4px 24px rgba(0, 0, 0, 0.3);    --radius: 12px;    --transition: 0.25s cubic-bezier(0.4, 0, 0.2, 1);}* {    margin: 0;    padding: 0;    box-sizing: border-box;}body {    font-family: 'Segoe UI', system-ui, -apple-system, sans-serif;    background: var(--bg);    color: var(--text);    min-height: 100vh;    line-height: 1.6;    background-image:        radial-gradient(ellipse at 20% 10%, rgba(88, 166, 255, 0.04) 0%, transparent 60%),        radial-gradient(ellipse at 80% 90%, rgba(163, 113, 247, 0.04) 0%, transparent 60%);}@property --logo-angle {    syntax: '<angle>';    initial-value: 0deg;    inherits: false;}/* ═══════════════════════════════════════════════════════   Header   ═══════════════════════════════════════════════════════ */.header {    background: var(--surface);    border-bottom: 1px solid var(--border);    padding: 1.25rem 1.5rem;    position: sticky;    top: 0;    z-index: 100;    backdrop-filter: blur(12px);    background: rgba(22, 27, 34, 0.85);}.header-inner {    max-width: 1400px;    margin: 0 auto;    display: flex;    flex-wrap: wrap;    align-items: center;    justify-content: space-between;    gap: 1rem;}.logo {    display: flex;    align-items: center;    gap: 0.65rem;    font-size: 1.35rem;    font-weight: 700;    letter-spacing: -0.02em;    user-select: none;}.logo-icon {    width: 38px;    height: 38px;    border-radius: 10px;    flex-shrink: 0;    padding: 3px;    background: conic-gradient(        from var(--logo-angle),        rgb(255, 0, 0),        rgb(255, 127, 0),        rgb(255, 255, 0),        rgb(0, 200, 0),        rgb(0, 0, 255),        rgb(75, 0, 130),        rgb(148, 0, 211),        rgb(255, 0, 0)    );    animation: logo-border-spin 3s linear infinite;}@keyframes logo-border-spin {    to {        --logo-angle: 360deg;    }}.stats {    display: flex;    gap: 1.5rem;    font-size: 0.875rem;    color: var(--text-secondary);}.stats span {    color: #fff;    font-weight: 600;}/* ═══════════════════════════════════════════════════════   Sticky Bar (Controls + Donation)   ═══════════════════════════════════════════════════════ */.sticky-bar {    position: sticky;    top: 73px;    z-index: 99;    background: rgba(13, 17, 23, 0.92);    backdrop-filter: blur(16px);    -webkit-backdrop-filter: blur(16px);    border-bottom: 1px solid var(--border);    box-shadow: 0 6px 20px rgba(0, 0, 0, 0.25);}/* ═══════════════════════════════════════════════════════   Controls   ═══════════════════════════════════════════════════════ */.controls {    max-width: 1400px;    margin: 0 auto;    padding: 1rem 1.5rem 0.75rem;    display: flex;    flex-wrap: wrap;    gap: 0.75rem;    align-items: center;}.search-wrapper {    position: relative;    flex: 1;    min-width: 220px;    max-width: 420px;}.search-wrapper svg {    position: absolute;    left: 14px;    top: 50%;    transform: translateY(-50%);    width: 18px;    height: 18px;    color: var(--text-secondary);    pointer-events: none;}#searchInput {    width: 100%;    padding: 0.7rem 1rem 0.7rem 2.6rem;    border-radius: 50px;    border: 1px solid var(--border);    background: var(--surface);    color: #fff;    font-size: 0.95rem;    outline: none;    transition: var(--transition);}#searchInput:focus {    border-color: var(--accent);    box-shadow: 0 0 0 3px rgba(88, 166, 255, 0.12);}#searchInput::placeholder {    color: var(--text-secondary);}.filter-chips {    display: flex;    flex-wrap: wrap;    gap: 0.45rem;}.chip {    padding: 0.5rem 1rem;    border-radius: 50px;    border: 1px solid var(--border);    background: var(--surface);    color: var(--text-secondary);    cursor: pointer;    font-size: 0.8rem;    font-weight: 500;    transition: var(--transition);    white-space: nowrap;    user-select: none;}.chip:hover {    border-color: #fff3;    color: #ddd;}.chip.active {    background: var(--accent);    border-color: var(--accent);    color: #fff;}.sort-btn {    padding: 0.5rem 1.1rem;    border-radius: 50px;    border: 1px solid var(--border);    background: var(--surface);    color: var(--text);    cursor: pointer;    font-size: 0.8rem;    font-weight: 500;    transition: var(--transition);    white-space: nowrap;    display: flex;    align-items: center;    gap: 0.35rem;}.sort-btn:hover {    border-color: #fff3;}.sort-btn.active-sort {    border-color: var(--accent);    color: var(--accent);}/* ═══════════════════════════════════════════════════════   Grid & Cards   ═══════════════════════════════════════════════════════ */.container {    max-width: 1400px;    margin: 1.75rem auto 3rem;    padding: 0 1.5rem;}.grid {    display: grid;    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));    gap: 1.25rem;}.no-results {    grid-column: 1 / -1;    text-align: center;    padding: 4rem 2rem;    color: var(--text-secondary);}.no-results h3 {    font-size: 1.4rem;    margin-bottom: 0.5rem;    color: #fff;}/* Card */.card {    background: var(--surface);    border: 1px solid var(--border);    border-radius: var(--radius);    padding: 1.4rem;    transition: var(--transition);    position: relative;    overflow: hidden;    display: flex;    flex-direction: column;    gap: 0.75rem;}.card::before {    content: '';    position: absolute;    top: 0;    left: 0;    right: 0;    height: 3px;}.card:hover {    border-color: #fff2;    box-shadow: var(--card-shadow);    transform: translateY(-2px);}.card-top {    display: flex;    align-items: flex-start;    justify-content: space-between;    gap: 0.75rem;}.lang-icon {    width: 44px;    height: 44px;    border-radius: 10px;    display: flex;    align-items: center;    justify-content: center;    font-weight: 700;    font-size: 1.1rem;    flex-shrink: 0;    color: #fff;}.lang-name {    font-size: 1.15rem;    font-weight: 700;    color: #fff;    letter-spacing: -0.01em;    word-break: break-word;}.lang-year {    font-size: 0.78rem;    color: var(--text-secondary);    background: #fff1;    padding: 0.2rem 0.55rem;    border-radius: 20px;    white-space: nowrap;}.lang-desc {    font-size: 0.85rem;    color: var(--text-secondary);    display: -webkit-box;    -webkit-line-clamp: 3;    -webkit-box-orient: vertical;    overflow: hidden;    flex-grow: 1;}.card-tags {    display: flex;    flex-wrap: wrap;    gap: 0.4rem;}.tag {    font-size: 0.7rem;    padding: 0.25rem 0.6rem;    border-radius: 20px;    font-weight: 500;    white-space: nowrap;}.tag-paradigm {    background: rgba(163, 113, 247, 0.15);    color: var(--purple);}.tag-typing {    background: rgba(57, 210, 192, 0.15);    color: var(--cyan);}.tag-creator {    background: rgba(210, 153, 29, 0.15);    color: var(--orange);}.card-footer {    display: flex;    align-items: center;    justify-content: space-between;    font-size: 0.75rem;    color: var(--text-secondary);    border-top: 1px solid var(--border);    padding-top: 0.65rem;    margin-top: auto;}/* Card accent colors */.card-accent-blue::before {    background: var(--accent);}.card-accent-green::before {    background: var(--green);}.card-accent-orange::before {    background: var(--orange);}.card-accent-purple::before {    background: var(--purple);}.card-accent-cyan::before {    background: var(--cyan);}.card-accent-red::before {    background: var(--red);}.icon-blue {    background: linear-gradient(135deg, #1a6dcc, #58a6ff);}.icon-green {    background: linear-gradient(135deg, #1a7a3a, #3fb950);}.icon-orange {    background: linear-gradient(135deg, #9a6d0c, #d2991d);}.icon-purple {    background: linear-gradient(135deg, #6e3fc9, #a371f7);}.icon-cyan {    background: linear-gradient(135deg, #1a7a6a, #39d2c0);}.icon-red {    background: linear-gradient(135deg, #9a2020, #f85149);}/* ═══════════════════════════════════════════════════════   Code Block & Copy Button   ═══════════════════════════════════════════════════════ */.code-block-wrapper {    position: relative;    margin-top: 0.6rem;}.code-block-wrapper code {    display: block;    font-family: 'SF Mono', 'Fira Code', 'Cascadia Code', Consolas, monospace;    font-size: 0.73rem;    background: #0d1117;    border-radius: 6px;    padding: 0.5rem 2.4rem 0.5rem 0.7rem;    color: #c9d1d9;    overflow-x: auto;    white-space: pre-wrap;    border: 1px solid #30363d;    line-height: 1.5;    word-break: break-word;}.copy-btn {    position: absolute;    top: 6px;    right: 6px;    background: rgba(22, 27, 34, 0.85);    border: 1px solid #30363d;    border-radius: 5px;    color: #8b949e;    cursor: pointer;    padding: 5px 7px;    display: flex;    align-items: center;    justify-content: center;    transition: var(--transition);    z-index: 2;    backdrop-filter: blur(4px);    line-height: 1;}.copy-btn:hover {    color: #c9d1d9;    border-color: #fff3;    background: rgba(33, 38, 45, 0.92);}.copy-btn:active {    transform: scale(0.92);}.copy-btn.copied {    color: var(--green);    border-color: var(--green);    background: rgba(63, 185, 80, 0.18);    pointer-events: none;}/* ═══════════════════════════════════════════════════════   Donation Bar   ═══════════════════════════════════════════════════════ */.donation-bar {    position: static;    z-index: auto;    background: transparent;    border-top: 1px solid var(--border);    border-bottom: none;    margin: 0;    backdrop-filter: none;    box-shadow: none;    width: 100%;}.donation-inner {    max-width: 1400px;    margin: 0 auto;    padding: 0.75rem 1.5rem;    display: flex;    flex-wrap: wrap;    align-items: center;    justify-content: space-between;    gap: 0.8rem;}.donation-label {    display: flex;    align-items: center;    gap: 0.5rem;    font-size: 0.875rem;    font-weight: 500;    color: var(--text-secondary);    white-space: nowrap;}.heart-icon {    color: var(--red);    width: 18px;    height: 18px;    flex-shrink: 0;}.donation-links {    display: flex;    flex-wrap: wrap;    gap: 0.6rem;    align-items: center;}.donation-link {    display: flex;    align-items: center;    gap: 0.4rem;    padding: 0.45rem 0.9rem;    border-radius: 50px;    text-decoration: none;    font-size: 0.8rem;    font-weight: 500;    background: var(--surface);    border: 1px solid var(--border);    color: var(--text);    transition: var(--transition);    white-space: nowrap;    line-height: 1.2;}.donation-link:hover {    border-color: #fff3;    background: #1c2430;}.donation-icon {    font-size: 1rem;    line-height: 1;}/* Platform-specific accents */.trakteer:hover {    color: #d2991d;    border-color: #d2991d;}.kofi:hover {    color: #58a6ff;    border-color: #58a6ff;}.nowpayment:hover {    color: var(--purple);    border-color: var(--purple);}/* ═══════════════════════════════════════════════════════   Filter Dropdown   ═══════════════════════════════════════════════════════ */.filter-dropdown-wrapper {    position: relative;    flex-shrink: 0;}.filter-dropdown {    position: relative;}.filter-dropdown-trigger {    display: flex;    align-items: center;    gap: 0.5rem;    padding: 0.55rem 0.9rem 0.55rem 0.85rem;    border-radius: 50px;    border: 1px solid var(--border);    background: var(--surface);    color: var(--text);    cursor: pointer;    font-size: 0.85rem;    font-weight: 500;    white-space: nowrap;    transition: var(--transition);    min-width: 155px;    justify-content: space-between;    user-select: none;}.filter-dropdown-trigger:hover {    border-color: #fff3;    background: #1c2430;}.filter-dropdown-trigger:focus-visible {    outline: none;    border-color: var(--accent);    box-shadow: 0 0 0 3px rgba(88, 166, 255, 0.15);}.filter-dropdown-trigger.is-open {    border-color: var(--accent);    color: var(--accent);    box-shadow: 0 0 0 3px rgba(88, 166, 255, 0.12);}.filter-dropdown-icon {    width: 15px;    height: 15px;    color: var(--text-secondary);    flex-shrink: 0;    transition: color var(--transition);}.filter-dropdown-trigger.is-open .filter-dropdown-icon {    color: var(--accent);}.filter-dropdown-arrow {    width: 14px;    height: 14px;    flex-shrink: 0;    transition: transform var(--transition), color var(--transition);    color: var(--text-secondary);}.filter-dropdown-trigger.is-open .filter-dropdown-arrow {    transform: rotate(180deg);    color: var(--accent);}/* Dropdown menu */.filter-dropdown-menu {    display: none;    position: absolute;    top: calc(100% + 8px);    left: 0;    min-width: 175px;    background: var(--surface);    border: 1px solid var(--border);    border-radius: 12px;    padding: 0.4rem;    list-style: none;    z-index: 200;    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.45), 0 2px 8px rgba(0, 0, 0, 0.3);    animation: dropdownFadeIn 0.15s cubic-bezier(0.4, 0, 0.2, 1);}.filter-dropdown-menu.open {    display: block;}@keyframes dropdownFadeIn {    from {        opacity: 0;        transform: translateY(-6px) scale(0.97);    }    to {        opacity: 1;        transform: translateY(0) scale(1);    }}/* Option items */.filter-option {    display: flex;    align-items: center;    gap: 0.6rem;    padding: 0.5rem 0.75rem;    border-radius: 8px;    cursor: pointer;    font-size: 0.84rem;    font-weight: 500;    color: var(--text-secondary);    transition: background var(--transition), color var(--transition);    white-space: nowrap;    user-select: none;}.filter-option:hover {    background: rgba(88, 166, 255, 0.08);    color: var(--text);}.filter-option.active {    background: rgba(88, 166, 255, 0.12);    color: var(--accent);}.filter-option-dot {    width: 7px;    height: 7px;    border-radius: 50%;    background: var(--border);    flex-shrink: 0;    transition: background var(--transition), transform var(--transition);}.filter-option:hover .filter-option-dot {    background: var(--text-secondary);}.filter-option.active .filter-option-dot {    background: var(--accent);    transform: scale(1.3);    box-shadow: 0 0 6px rgba(88, 166, 255, 0.6);}/* ═══════════════════════════════════════════════════════   Scrollbar   ═══════════════════════════════════════════════════════ */::-webkit-scrollbar {    width: 6px;    height: 6px;}::-webkit-scrollbar-track {    background: transparent;}::-webkit-scrollbar-thumb {    background: #fff1;    border-radius: 20px;}/* ═══════════════════════════════════════════════════════   Responsive   ═══════════════════════════════════════════════════════ */@media (max-width: 768px) {    .header-inner {        flex-direction: column;        align-items: flex-start;    }    .sticky-bar {        top: 103px;    }    .grid {        grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));        gap: 1rem;    }    .controls {        flex-direction: column;        align-items: stretch;        padding: 0.75rem 1rem 0.65rem;    }    .search-wrapper {        max-width: 100%;    }    .card {        padding: 1.1rem;    }    .code-block-wrapper code {        font-size: 0.7rem;        padding: 0.45rem 2.2rem 0.45rem 0.6rem;    }    .copy-btn {        top: 4px;        right: 4px;        padding: 4px 6px;    }    .donation-inner {        flex-direction: column;        align-items: flex-start;        gap: 0.5rem;        padding: 0.75rem 1rem;    }    .donation-links {        width: 100%;        justify-content: flex-start;    }    .filter-dropdown-wrapper {        width: 100%;    }    .filter-dropdown-trigger {        width: 100%;        min-width: unset;        border-radius: 10px;        padding: 0.65rem 1rem;    }    .filter-dropdown-menu {        width: 100%;        left: 0;        right: 0;    }}/* Share link row di dalam card */.share-link-row {    display: flex;    align-items: center;    gap: 6px;    margin-top: 0.5rem;}.card-share-input {    flex: 1;    background: #0d1117;    border: 1px solid var(--border);    color: var(--text-secondary);    padding: 6px 10px;    border-radius: 6px;    font-family: 'SF Mono', 'Fira Code', Consolas, monospace;    font-size: 0.68rem;    outline: none;    cursor: pointer;    transition: var(--transition);    min-width: 0;}.card-share-input:hover {    border-color: var(--accent);    color: var(--accent);}.card-share-input:focus {    border-color: var(--accent);    color: var(--accent);    box-shadow: 0 0 0 2px rgba(88, 166, 255, 0.12);}.card-share-copy-btn {    background: transparent;    border: 1px solid var(--border);    border-radius: 6px;    color: var(--text-secondary);    cursor: pointer;    padding: 5px 7px;    display: flex;    align-items: center;    justify-content: center;    transition: var(--transition);    flex-shrink: 0;}.card-share-copy-btn:hover {    border-color: var(--accent);    color: var(--accent);    background: rgba(88, 166, 255, 0.08);}.card-share-copy-btn.copied {    color: var(--green);    border-color: var(--green);    background: rgba(63, 185, 80, 0.15);    pointer-events: none;}