:root {
    --background: oklch(22% .06 265);
    --foreground: oklch(94% .01 250);
    --card: oklch(27% .06 258);
    --primary: oklch(55% .1 250);
    --primary-foreground: oklch(98% .005 250);
    --secondary: oklch(33% .06 255);
    --secondary-foreground: oklch(90% .02 250);
    --muted-foreground: oklch(80% .025 250);
    --border: oklch(40% .06 255);
    --nav: oklch(18% .05 265);
    --highlight: oklch(32% .045 85);
    --font-display: "Fraunces", Georgia, serif;
    --font-sans: "Manrope", system-ui, sans-serif
}

*,:before,:after {
    box-sizing: border-box
}

html {
    scroll-behavior: smooth
}

body {
    background-color: var(--background);
    color: var(--foreground);
    font-family: var(--font-sans);
    -webkit-font-smoothing: antialiased;
    margin: 0
}

a {
    color: inherit
}

img {
    max-width: 100%
}

.site-nav {
    border-bottom: 1px solid var(--border);
    background: var(--nav)
}

.nav-inner {
    justify-content: space-between;
    align-items: center;
    max-width: 72rem;
    height: 3.5rem;
    margin: 0 auto;
    padding: 0 1.25rem;
    display: flex
}

.nav-logo {
    font-family: var(--font-display);
    letter-spacing: -.02em;
    align-items: center;
    gap: .5rem;
    font-size: 1.25rem;
    font-weight: 600;
    text-decoration: none;
    display: flex
}

.nav-logo .accent {
    color: var(--primary)
}

.nav-links {
    align-items: center;
    gap: 1.5rem;
    font-size: .875rem;
    display: flex
}

.nav-link {
    text-underline-offset: 4px;
    text-decoration: underline;
    -webkit-text-decoration-color: var(--primary);
    -webkit-text-decoration-color: var(--primary);
    text-decoration-color: var(--primary)
}

.nav-link-muted {
    color: var(--muted-foreground);
    text-decoration: none
}

.nav-link-muted:hover {
    color: var(--foreground)
}

.nav-divider {
    background: var(--border);
    width: 1px;
    height: 1.25rem
}

.nav-logo,.nav-link,.nav-link-muted {
    white-space: nowrap
}

@media (width<=480px) {
    .nav-inner {
        padding: 0 .75rem
    }

    .nav-logo {
        gap: .3rem;
        font-size: .95rem
    }

    .nav-links {
        gap: .5rem;
        font-size: .7rem
    }
}


.hero {
    text-align: center;
    max-width: 64rem;
    margin: 0 auto;
    padding: 3.5rem 1.25rem 2.5rem
}

.hero-title {
    font-family: var(--font-display);
    margin: 0;
    font-size: 2.25rem;
    font-weight: 600;
    line-height: 1.2
}

.hero-date {
    color: var(--muted-foreground);
    margin-top: 1rem;
    font-size: .75rem
}

.hero-intro {
    color: var(--muted-foreground);
    margin-top: 1rem;
    font-size: 1rem
}

.hero-intro.clamped {
    -webkit-line-clamp: 1;
    -webkit-box-orient: vertical;
    display: -webkit-box;
    overflow: hidden
}

.hero-toggle {
    cursor: pointer;
    color: var(--foreground);
    text-underline-offset: 4px;
    background: 0 0;
    border: none;
    margin-top: 1rem;
    padding: 0;
    font-family: inherit;
    font-size: .875rem;
    font-weight: 600;
    text-decoration: underline
}

.toplist {
    max-width: 72rem;
    margin: 0 auto;
    padding: 0 1.25rem 4rem
}

.toplist-heading {
    align-items: center;
    gap: 1.25rem;
    margin-bottom: 1.5rem;
    display: flex
}

.toplist-heading .line {
    background: var(--border);
    flex: 1;
    height: 1px
}

.toplist-heading h2 {
    font-family: var(--font-display);
    text-align: center;
    margin: 0;
    font-size: 1.5rem;
    font-weight: 600
}

.toplist-grid {
    gap: 1.25rem;
    margin: 0;
    padding: 0;
    list-style: none;
    display: grid
}

.casino-card {
    border: 1px solid var(--border);
    background: var(--card);
    padding: 1.25rem;
    position: relative
}

.casino-card:first-child {
    border-top-color: var(--primary)
}

.casino-rank {
    background: var(--background);
    font-family: var(--font-display);
    padding: 0 .5rem;
    font-size: 1.25rem;
    position: absolute;
    top: -.875rem;
    left: 1.25rem
}

.casino-row {
    flex-wrap: wrap;
    align-items: center;
    gap: 1rem;
    display: flex
}

.casino-main {
    flex: 16rem;
    align-items: center;
    gap: 1rem;
    min-width: 0;
    display: flex
}

.casino-logo {
    border: 1px solid var(--border);
    border-radius: .75rem;
    flex-shrink: 0;
    justify-content: center;
    align-items: center;
    width: 9rem;
    height: 6rem;
    padding: .625rem;
    text-decoration: none;
    display: flex
}

.casino-logo img {
    object-fit: contain;
    width: 100%;
    height: 100%
}

.casino-info {
    text-align: left;
    flex: 1;
    min-width: 0
}

.casino-name {
    font-family: var(--font-display);
    margin: 0;
    font-size: 1.25rem
}

.casino-bonus {
    color: var(--muted-foreground);
    margin-top: .25rem;
    font-weight: 600
}

.casino-tags {
    flex-wrap: wrap;
    justify-content: flex-start;
    gap: .5rem;
    margin-top: .5rem;
    display: flex
}

.casino-tag {
    background: var(--secondary);
    color: var(--secondary-foreground);
    padding: .125rem .5rem;
    font-size: .75rem
}

.casino-actions {
    flex: 12rem;
    align-items: stretch;
    gap: .5rem;
    display: flex
}

.rating-box {
    border: 1px solid var(--border);
    flex-direction: column;
    flex-shrink: 0;
    justify-content: center;
    align-items: center;
    width: 52px;
    display: flex
}

.rating-value {
    font-family: var(--font-display);
    font-size: 1.25rem;
    font-weight: 600
}

.rating-max {
    color: var(--muted-foreground);
    font-size: 10px
}

.play-btn {
    background: var(--primary);
    min-width: 8rem;
    height: 52px;
    color: var(--primary-foreground);
    text-align: center;
    flex: 1;
    justify-content: center;
    align-items: center;
    padding: 0 1.5rem;
    font-weight: 600;
    text-decoration: none;
    transition: background-color .15s;
    display: flex
}

.play-btn:hover {
    background: oklch(50% .1 250)
}

.reviews {
    max-width: 64rem;
    margin: 0 auto;
    padding: 0 1.25rem 6rem
}

.article h2 {
    font-family: var(--font-display);
    margin: 3rem 0 1rem;
    font-size: 2rem;
    font-weight: 600;
    line-height: 1.2
}

.article h3 {
    font-family: var(--font-display);
    margin: 2rem 0 .75rem;
    font-size: 1.5rem;
    font-weight: 600
}

.article p {
    color: var(--muted-foreground);
    margin: 0 0 1rem;
    line-height: 1.75
}

.article ul {
    margin: 0 0 1rem;
    padding-left: 1.25rem;
    list-style: outside
}

.article ol {
    margin: 0 0 1rem;
    padding-left: 1.25rem;
    list-style: decimal
}

.article li p {
    margin: 0 0 .4rem
}

.article strong {
    color: var(--foreground)
}

.article-table-scroll {
    overscroll-behavior-x: contain;
    max-width: 100%;
    margin: 1rem 0;
    overflow-x: auto
}

.article-table-scroll:focus-visible {
    outline: 2px solid var(--primary);
    outline-offset: 2px
}

.article table {
    border-collapse: collapse;
    width: 100%;
    margin: 1rem 0;
    font-size: .9rem
}

.article-table-scroll table {
    margin: 0
}

.article th,.article td {
    border: 1px solid var(--border);
    text-align: left;
    padding: .6rem
}

.article th {
    background: var(--card)
}

.review-panel {
    background: var(--card);
    border: none;
    margin: 1.5rem 0;
    padding: 1.75rem 2rem 1rem;
    box-shadow: 0 20px 40px -24px oklch(10% .05 265/.8)
}

.review-panel h3 {
    color: var(--foreground);
    margin-top: 0;
    padding-bottom: .75rem
}

.review-panel ul {
    background: var(--secondary);
    margin-bottom: 1.25rem;
    padding: 1rem 1.25rem;
    list-style: none
}

.conclusion-panel {
    background: var(--highlight);
    margin: 1.5rem 0;
    padding: 2rem 2.25rem;
    box-shadow: 0 20px 40px -24px oklch(10% .05 265/.8)
}

.conclusion-panel h2 {
    color: var(--foreground);
    margin-top: 0
}

.site-footer {
    border-top: 1px solid var(--border);
    background: var(--nav);
    text-align: center;
    color: var(--muted-foreground);
    padding: 2rem 1.25rem;
    font-size: .75rem
}

.error-page {
    background: var(--background);
    justify-content: center;
    align-items: center;
    min-height: 100vh;
    padding: 0 1rem;
    display: flex
}

.error-box {
    text-align: center;
    max-width: 28rem
}

.error-code {
    color: var(--foreground);
    margin: 0;
    font-size: 4.5rem;
    font-weight: 700
}

.error-title {
    color: var(--foreground);
    margin-top: 1rem;
    font-size: 1.25rem;
    font-weight: 600
}

.error-text {
    color: var(--muted-foreground);
    margin-top: .5rem;
    font-size: .875rem
}

.error-actions {
    flex-wrap: wrap;
    justify-content: center;
    gap: .5rem;
    margin-top: 1.5rem;
    display: flex
}

.btn {
    cursor: pointer;
    border-radius: .375rem;
    justify-content: center;
    align-items: center;
    padding: .5rem 1rem;
    font-family: inherit;
    font-size: .875rem;
    font-weight: 500;
    text-decoration: none;
    transition: background-color .15s;
    display: inline-flex
}

.btn-primary {
    background: var(--primary);
    color: var(--primary-foreground);
    border: none
}

.btn-primary:hover {
    background: oklch(50% .1 250)
}

.btn-outline {
    background: var(--background);
    color: var(--foreground);
    border: 1px solid var(--border)
}

.btn-outline:hover {
    background: var(--secondary)
}

@media (width>=768px) {
    .hero-title {
        font-size: 3.25rem
    }

    .toplist-heading h2 {
        font-size: 2.25rem
    }
}

@media (width>=1024px) {
    .toplist {
        max-width: 64rem
    }

    .toplist-heading {
        gap: 1rem;
        margin-bottom: 1rem
    }

    .toplist-heading h2 {
        font-size: 1.75rem
    }

    .toplist-grid {
        gap: .75rem
    }

    .casino-card {
        padding: 1rem
    }

    .casino-row {
        flex-wrap: nowrap;
        gap: 1.5rem
    }

    .casino-main {
        gap: 1.25rem
    }

    .casino-logo {
        width: 13rem;
        height: 7.25rem;
        padding: .75rem
    }

    .casino-name {
        font-size: 1.5rem
    }

    .casino-actions {
        flex: none;
        align-items: center;
        gap: 1.5rem
    }

    .rating-box {
        width: 4.75rem;
        height: 52px
    }

    .rating-value {
        font-size: 1.75rem
    }

    .play-btn {
        flex: none;
        width: 10rem;
        padding: 0
    }
}

@media (width<=480px) {
    .casino-card {
        padding: 1rem
    }

    .casino-row,.casino-main {
        gap: .75rem
    }

    .casino-logo {
        width: 7rem;
        height: 5rem;
        padding: .5rem
    }

    .casino-name {
        font-size: 1.1rem
    }

    .rating-box,.play-btn {
        height: 44px
    }

    .rating-box {
        width: 44px
    }
}

.page-main {
    max-width: 64rem;
    margin: 0 auto;
    padding: 3.5rem 1.25rem 6rem
}

.page-main h1 {
    font-family: var(--font-display);
    letter-spacing: -.02em;
    margin: 0 0 .5rem;
    font-size: 2.5rem;
    font-weight: 600
}

.page-updated {
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--muted-foreground);
    margin: 0 0 2rem;
    font-size: .75rem
}

.footer-links {
    flex-wrap: wrap;
    justify-content: center;
    gap: .5rem 1.5rem;
    margin-bottom: .75rem;
    display: flex
}

.footer-links a {
    color: var(--foreground);
    letter-spacing: .02em;
    font-size: .8rem;
    text-decoration: none
}

.footer-links a:hover {
    text-decoration: underline
}
