/* =========================================================
   CUSTOM UI SYSTEM
   ========================================================= */
@import url('https://fonts.googleapis.com/css2?family=Atkinson+Hyperlegible:ital,wght@0,400;0,700;1,400;1,700&family=Berkshire+Swash&family=Geo:ital@0;1&family=Italianno&family=Madimi+One&display=swap');
/* ====ROOT==== */
:root {
    --text-light  : rgba(250, 250, 250, 1);
    --text-muted  : rgba(150, 150, 150, 1);
    --text-dark   : rgba(20, 20, 20, 1);
    --white-rgb   : 250, 250, 250;
    --dark-rgb    : 20, 20, 20;
    --glass-border: rgba(250, 250, 250, 0.12);
    --glass-shadow: rgba(0, 0, 0, 0.25);
    --caption     : "Berkshire Swash", serif;
    --label       : "Italianno", cursive;
    --title       : "Madimi One", sans-serif;
    --subtitle    : 'Courier New', Courier, monospace;
    --desc        : "Atkinson Hyperlegible", sans-serif;
    --help        : "Geo", sans-serif;
}
/* ==== BODY ==== */
body {
    font-size: 14px;
    font-weight: 400;
    font-family: var(--subtitle);
    background-color: transparent;
    overflow-x: hidden;
}
#music-toggle {
    position: fixed;
    top: 24px;
    left: 24px;
    z-index: 1000;
    color: rgba(250, 220, 220);
    cursor: pointer;
    display: flex;
    font-family: var(--title);
}
/* ==== FONT SYSTEM ==== */
/* ---- Font-family ---- */
.fo-caption {
    font-family: var(--caption);
}
.fo-label {
    font-family: var(--label);
}
.fo-title {
    font-family: var(--title);
}
.fo-subtitle {
    font-family: var(--subtitle);
}
.fo-desc {
    font-family: var(--desc);
}
.fo-help {
    font-family: var(--help);
}
/* ---- Font-size ---- */
.ch-1 {
    font-size: calc(2.85rem + 2.5vw) !important;
    font-weight: 700;
}
.ch-2 {
    font-size: calc(2.65rem + 2.5vw) !important;
    font-weight: 700;
}
.ch-3 {
    font-size: calc(2.45rem + 2.5vw) !important;
    font-weight: 700;
}
.ch-4 {
    font-size: calc(2.25rem + 2.5vw) !important;
    font-weight: 700;
}
.ch-5 {
    font-size: calc(2.05rem + 2.5vw) !important;
    font-weight: 700;
}
.cfs-1 {
    font-size: calc(1.75rem + 1.5vw) !important;
}
.cfs-2 {
    font-size: calc(1.55rem + 1.5vw) !important;
}
.cfs-3 {
    font-size: calc(1.35rem + 1.5vw) !important;
}
.cfs-4 {
    font-size: calc(1.15rem + 0.2vw) !important;
}
.cfs-5 {
    font-size: calc(0.95rem + 0.2vw) !important;
}
.cfs-6 {
    font-size: calc(0.85rem + 0.2vw) !important;
}
.cfs-0 {
    font-size: calc(0.75rem + 0.2vw) !important;
}
.cfs-is {
    font-size: clamp(8px, 0.68rem + 0.5vw, 12px);
    font-style: italic !important;
}
.cfs-sm {
    font-size: clamp(8px, 0.65rem + 0.5vw, 14px);
}
.cfs-ix {
    font-size: clamp(8px, 0.58rem + 0.5vw, 12px);
    font-style: italic !important;
}
.cfs-xs {
    font-size: clamp(8px, 0.55rem + 0.5vw, 12px);
}
/* ---- Font-weight ----*/
.cfw-lighter {
    font-weight: 200;
}
.cfw-lights {
    font-weight: 300;
}
.cfw-light {
    font-weight: 400;
}
.cfw-semi {
    font-weight: 500;
}
.cfw-bold {
    font-weight: 700;
}
.cfw-bolds {
    font-weight: 800;
}
.cfw-bolder {
    font-weight: 900;
}
/* ==== COLOR SYSTEM==== */
/* ---- LEMON SHINING GOLD ---- */
.golds,
.txt-golds,
.bg-golds,
.bg-glass-golds,
.btn-golds,
.ui-toast-warning {
    --colors: linear-gradient(50deg,
            rgba(250, 220, 0, 0.9) 0%,
            rgba(250, 200, 40, 0.8) 25%,
            rgba(220, 170, 60, 0.7) 50%,
            rgba(250, 220, 100, 0.6) 75%,
            rgba(190, 140, 10, 0.5) 100%);
    --glows: rgba(250, 200, 40, 0.5);
    --texts: rgba(190, 140, 10, 0.9);
    --text-color: var(--text-light);
}
/* ---- OCEANS (DEEP BLUE OCEAN 50/90/100) ---- */
.oceans,
.txt-oceans,
.bg-oceans,
.bg-glass-oceans,
.btn-oceans,
.ui-toast-primary {
    --colors: linear-gradient(50deg,
            rgba(40, 40, 80, 0.9) 0%,
            rgba(20, 50, 200, 0.8) 25%,
            rgba(80, 40, 210, 0.7) 50%,
            rgba(20, 50, 200, 0.6) 75%,
            rgba(60, 30, 220, 0.5) 100%);
    --glows: rgba(60, 50, 150, 0.5);
    --texts: rgba(60, 50, 150, 0.9);
    --text-color: var(--text-light);
}
/* ---- SAGE (RAINFOREST DARK GREEN) ---- */
.sages,
.txt-sages,
.bg-sages,
.bg-glass-sages,
.btn-sages,
.ui-toast-success {
    --colors: linear-gradient(50deg,
            rgba(10, 60, 50, 0.9) 0%,
            rgba(50, 150, 70, 0.8) 25%,
            rgba(40, 160, 100, 0.7) 50%,
            rgba(10, 110, 50, 0.6) 75%,
            rgba(5, 120, 20, 0.5) 100%);
    --glows: rgba(10, 100, 50, 0.5);
    --texts: rgba(10, 150, 70, 0.9);
    --text-color: var(--text-light);
}
/* ---- ROSES (CYBER BLOOD + NEON RED MAW AR) ---- */
.roses,
.txt-roses,
.bg-roses,
.bg-glass-roses,
.btn-roses,
.ui-toast-danger {
    --colors: linear-gradient(50deg,
            rgba(150, 10, 10, 0.5) 0%,
            rgba(170, 80, 50, 0.8) 25%,
            rgba(100, 10, 10, 0.7) 50%,
            rgba(240, 10, 10, 0.6) 75%,
            rgba(200, 60, 10, 0.5) 100%);
    --glows: rgba(150, 30, 30, 0.5);
    --texts: rgba(150, 30, 30, 0.9);
    --text-color: var(--text-light);
}
/* ---- LUXURY ---- */
.luxury,
.txt-luxury,
.bg-luxury,
.bg-glass-luxury,
.btn-luxury {
    --colors: linear-gradient(50deg,
            rgba(170, 150, 50, 0.7) 0%,
            rgba(250, 250, 150, 0.8) 60%,
            rgba(240, 200, 50, 0.6) 80%,
            rgba(250, 210, 100, 0.5) 100%);
    --glows: linear-gradient(50deg,
            rgba(170, 150, 50, 0.7) 0%,
            rgba(250, 250, 150, 0.8) 60%,
            rgba(240, 200, 50, 0.6) 80%,
            rgba(250, 210, 100, 0.5) 100%);
    --texts: linear-gradient(50deg,
            rgba(170, 150, 50, 0.8) 0%,
            rgba(240, 240, 120, 0.9) 60%,
            rgba(240, 200, 50, 0.6) 80%,
            rgba(250, 210, 100, 0.5) 100%);
    --text-color: rgba(40, 40, 90, 0.9);
}
/* ---- FUTURES (CYBER NEON FUTURISTIC BLUE CYAN) ---- */
.futures,
.txt-futures,
.bg-futures,
.bg-glass-futures,
.btn-futures,
.ui-toast-info {
    --colors: linear-gradient(50deg,
            rgba(20, 170, 200, 0.9)0%,
            rgba(20, 90, 90, 0.8) 25%,
            rgba(120, 170, 220, 0.7) 50%,
            rgba(20, 50, 60, 0.6) 75%,
            rgba(50, 120, 250, 0.5) 100%);
    --glows: rgba(50, 150, 200, 0.5);
    --texts: rgba(50, 150, 200, 0.9);
    --text-color: var(--text-light);
}
/* ---- MINTS (SAVANA MINT GREEN GRASSLAND) ---- */
.mints,
.txt-mints,
.bg-mints,
.bg-glass-mints,
.btn-mints {
    --colors: linear-gradient(50deg,
            rgba(120, 250, 100, 0.9) 0%,
            rgba(20, 150, 10, 0.8) 25%,
            rgba(80, 240, 20, 0.7) 50%,
            rgba(150, 250, 80, 0.6) 75%,
            rgba(50, 200, 10, 0.5) 100%);
    --glows: rgba(50, 200, 20, 0.5);
    --texts: rgba(50, 200, 20, 0.9);
    --text-color: var(--text-light);
}
/* ---- OMBRE NEPTUNE ---- */
.neons,
.txt-neons,
.bg-neons,
.bg-glass-neons,
.btn-neons,
.ui-toast-process {
    --colors: linear-gradient(50deg,
            rgba(120, 50, 220, 0.9) 0%,
            rgba(240, 140, 220, 0.8) 25%,
            rgba(150, 20, 190, 0.7) 50%,
            rgba(120, 50, 120, 0.6) 75%,
            rgba(80, 50, 120, 0.5) 100%);
    --glows: rgba(200, 100, 250, 0.5);
    --texts: rgba(200, 100, 250, 0.9);
    --text-color: var(--text-light);
}
/* ---- SHINING NEON GILVER ---- */
.snows,
.txt-snows,
.bg-snows,
.bg-glass-snows,
.btn-snows,
.ui-toast-secondary {
    --colors: linear-gradient(50deg,
            rgba(240, 240, 250, 0.9) 0%,
            rgba(250, 250, 220, 0.8) 25%,
            rgba(250, 250, 150, 0.7) 50%,
            rgba(250, 250, 220, 0.6) 75%,
            rgba(240, 240, 250, 0.5) 100%);
    --glows: rgba(250, 250, 150, 0.5);
    --texts: rgba(240, 240, 250, 0.9);
    --text-color: rgba(40, 40, 90, 0.9);
}
/* ---- GRAYS ---- */
.grays,
.txt-grays,
.bg-grays,
.bg-glass-grays,
.btn-grays,
.ui-toast-light {
    --colors: linear-gradient(50deg,
        rgba(180,180,210,0.9) 0%,
        rgba(240,240,250,0.8) 25%,
        rgba(250,250,240,0.7) 50%,
        rgba(240,240,250,0.6) 75%,
        rgba(140,140,150,0.5) 100%);
    --glows: rgba(140,140,150,0.5);
    --texts: rgba(100, 100, 120, 0.9);
    --text-color: rgba(100, 100, 120, 0.9);
}
/* ---- FUTURISTIC BLACK GLASS ---- */
.deeps,
.txt-deeps,
.bg-deeps,
.bg-glass-deeps,
.btn-deeps,
.ui-toast-dark {
    --colors: linear-gradient(50deg,
            rgba(100, 100, 100, 0.9) 0%,
            rgba(50, 50, 100, 0.8) 25%,
            rgba(60, 60, 100, 0.7) 50%,
            rgba(90, 90, 120, 0.6) 75%,
            rgba(50, 50, 50, 0.5) 100%);
    --glows: rgba(50, 50, 100, 0.5);
    --texts: rgba(50, 50, 70, 0.9);
    --text-color: var(--text-light);
}
/* ---- WHITES ---- */
.bg-whites10 { background-color: rgba(var(--white-rgb),.1); }
.bg-whites20 { background-color: rgba(var(--white-rgb),.2); }
.bg-whites30 { background-color: rgba(var(--white-rgb),.3); }
.bg-whites40 { background-color: rgba(var(--white-rgb),.4); }
.bg-whites50 { background-color: rgba(var(--white-rgb),.5); }
.bg-whites60 { background-color: rgba(var(--white-rgb),.6); }
.bg-whites70 { background-color: rgba(var(--white-rgb),.7); }
.bg-whites80 { background-color: rgba(var(--white-rgb),.8); }
.bg-whites90 { background-color: rgba(var(--white-rgb),.9); }
.bg-whites { background-color: rgba(var(--white-rgb),1); }
.txt-whites10 { color: rgba(var(--white-rgb),.1); }
.txt-whites20 { color: rgba(var(--white-rgb),.2); }
.txt-whites30 { color: rgba(var(--white-rgb),.3); }
.txt-whites40 { color: rgba(var(--white-rgb),.4); }
.txt-whites50 { color: rgba(var(--white-rgb),.5); }
.txt-whites60 { color: rgba(var(--white-rgb),.6); }
.txt-whites70 { color: rgba(var(--white-rgb),.7); }
.txt-whites80 { color: rgba(var(--white-rgb),.8); }
.txt-whites90 { color: rgba(var(--white-rgb),.9); }
.txt-whites { color: rgba(var(--white-rgb),1); }
/* ---- DARKS ---- */
.bg-darks10 { background-color: rgba(var(--white-rgb),.1); }
.bg-darks20 { background-color: rgba(var(--white-rgb),.2); }
.bg-darks30 { background-color: rgba(var(--white-rgb),.3); }
.bg-darks40 { background-color: rgba(var(--white-rgb),.4); }
.bg-darks50 { background-color: rgba(var(--white-rgb),.5); }
.bg-darks60 { background-color: rgba(var(--white-rgb),.6); }
.bg-darks70 { background-color: rgba(var(--white-rgb),.7); }
.bg-darks80 { background-color: rgba(var(--white-rgb),.8); }
.bg-darks90 { background-color: rgba(var(--white-rgb),.9); }
.bg-darks { background-color: rgba(var(--white-rgb),1); }
.txt-darks10 { color: rgba(var(--white-rgb),.1); }
.txt-darks20 { color: rgba(var(--white-rgb),.2); }
.txt-darks30 { color: rgba(var(--white-rgb),.3); }
.txt-darks40 { color: rgba(var(--white-rgb),.4); }
.txt-darks50 { color: rgba(var(--white-rgb),.5); }
.txt-darks60 { color: rgba(var(--white-rgb),.6); }
.txt-darks70 { color: rgba(var(--white-rgb),.7); }
.txt-darks80 { color: rgba(var(--white-rgb),.8); }
.txt-darks90 { color: rgba(var(--white-rgb),.9); }
.txt-darks { color: rgba(var(--white-rgb),1); }
/* ---- BACKGROUND UTILITIES ---- */
[class*="bg-"]:not([class*="glass"]) {
    background: var(--colors);
}
/* GLASS BASE */
[class*="bg-glass-"] {
    position: relative;
    background: var(--colors);
    overflow: hidden;
    backdrop-filter: blur(14px) saturate(180%);
    -webkit-backdrop-filter: blur(14px) saturate(180%);
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 16px;
    box-shadow:
        0 10px 35px rgba(0, 0, 0, 0.25);
}
[class*="bg-glass-"]::before {
    content: '';
    position: absolute;
    inset: 0;
    background: rgba(255, 255, 255, 0.06);
    background-image: linear-gradient(135deg,
            rgba(255, 255, 255, 0.12),
            transparent 40%,
            rgba(255, 255, 255, 0.05));
    pointer-events: none;
    z-index: 1;
}
[class*="bg-glass-"]>* {
    position: relative;
    z-index: 2;
}
[class*="bg-glass-"] {
    transition: all 0.25s ease;
}
[class*="bg-glass-"]:hover {
    transform: translateY(-2px);
    box-shadow:
        0 15px 45px rgba(0, 0, 0, 0.35);
}
/* ---- BUTTON SYSTEM ---- */
[class*="btn-"] {
    position: relative;
    overflow: hidden;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 10px 16px;
    border-radius: 14px;
    border: 1px solid rgba(250, 250, 250, .75);
    background: var(--colors);
    color: rgb(240, 240, 250);
    font-size: .95rem;
    font-weight: 400;
    letter-spacing: .3px;
    text-decoration: none;
    cursor: pointer;
    user-select: none;
    transition: all .25s ease;
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, .15),
        0 4px 12px rgba(0, 0, 0, .15);
}
/* ---- SHINE EFFECT ---- */
[class*="btn-"]::before {
    content: "";
    position: absolute;
    top: 0;
    left: -120%;
    width: 60%;
    height: 100%;
    background: var(--glows);
    color: var(--text-color);
    transition: .7s ease;
}
[class*="btn-"]:hover::before {
    left: 150%;
}
/* ---- HOVER ---- */
[class*="btn-"]:hover {
    transform: translateY(-2px);
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, .2),
        0 8px 20px rgba(0, 0, 0, .25),
        0 0 15px var(--glows);
}
/* ---- ACTIVE ---- */
[class*="btn-"]:active {
    transform: translateY(1px) scale(.98);
    box-shadow:
        inset 0 3px 8px rgba(0, 0, 0, .25);
}
/* ---- DISABLED ---- */
[class*="btn-"]:disabled,
[class*="btn-"].disabled {
    opacity: .5;
    cursor: not-allowed;
    pointer-events: none;
}
/* =======================================================
   SIZE
======================================================= */
.btn-sm {
    padding: 6px 12px;
    font-size: .8rem;
    border-radius: 10px;
}
.btn-lg {
    padding: 14px 22px;
    font-size: 1rem;
    border-radius: 18px;
}
.btn-xl {
    padding: 18px 28px;
    font-size: 1.1rem;
    border-radius: 20px;
}
/* =======================================================
   WIDTH
======================================================= */
.btn-wide,
.btn-block {
    width: 100%;
}
/* =======================================================
   ICON BUTTON
======================================================= */
.btn-icon {
    width: 42px;
    height: 42px;
    padding: 0;
    flex-shrink: 0;
}
.btn-icon i {
    font-size: 1rem;
}
.btn-icon-lg {
    width: 52px;
    height: 52px;
}
.btn-icon-lg i {
    font-size: 1.2rem;
}
/* =======================================================
   ICON + TEXT
======================================================= */
.btn-icon-text {
    gap: 8px;
}
.btn-icon-text i {
    font-size: 1rem;
}
/* =======================================================
   BUTTON GROUP
======================================================= */
.btn-group {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: transparent;
    border: none;
    box-shadow: none;
    padding: 0;
}
/* masing-masing tombol */
.btn-group .btn,
.btn-group>[class*="btn-"] {
    border-radius: 18px !important;
    border: 1px solid rgba(0, 0, 0, .98);
    transition: all .25s ease;
}
.btn-group .btn:hover,
.btn-group>[class*="btn-"]:hover {
    transform: translateY(-2px);
    box-shadow:
        0 6px 15px rgba(0, 0, 0, .15),
        0 0 10px var(--glows);
}
/* =======================================================
   OUTLINE BUTTON
======================================================= */
[class*="btn-outline-"] {
    background: rgba(255, 255, 255, .05);
    color: var(--text-color);
    border: 1px solid rgba(255, 255, 255, .25);
    backdrop-filter: blur(8px);
}
[class*="btn-outline-"]:hover {
    background: var(--colors);
}
/* =======================================================
   GLASS BUTTON
======================================================= */
[class*="btn-glass-"] {
    background: rgba(255, 255, 255, .08);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border: 1px solid rgba(255, 255, 255, .18);
    color: inherit;
}
[class*="btn-glass-"]:hover {
    background: var(--colors);
    box-shadow:
        0 0 15px var(--glows),
        0 0 25px var(--glows);
}
/* =======================================================
   FLOAT ANIMATION
======================================================= */
.btn-float:hover {
    animation: btnFloat .8s ease infinite alternate;
}
@keyframes btnFloat {
    from {
        transform: translateY(-2px);
    }
    to {
        transform: translateY(-4px);
    }
}
/* =======================================================
   MOBILE
======================================================= */
@media (max-width: 576px) {
    .btn-icon-text span {
        display: none;
    }
    .btn-icon-text {
        width: 42px;
        padding: 0;
    }
    .btn-group {
        width: 100%;
    }
    .btn-group>[class*="btn-"] {
        flex: 1;
    }
}
.btn-primary,
.btn-golds,
.btn-oceans,
.btn-sages,
.btn-roses,
.btn-futures,
.btn-mints,
.btn-neons,
.btn-snows,
.btn-grays,
.btn-whites,
.btn-deeps {
    background: var(--colors);
    color: #fff;
}
.btn-outline-primary,
.btn-outline-golds,
.btn-outline-oceans,
.btn-outline-sages,
.btn-outline-roses,
.btn-outline-futures,
.btn-outline-mints,
.btn-outline-neons,
.btn-outline-snows,
.btn-outline-grays,
.btn-outline-whites,
.btn-outline-deeps {
    background: #fff;
    border: 1px solid rgba(0, 0, 0, 0.15);
    color: var(--text-color);
    position: relative;
}
.btn-outline-primary,
[class*="btn-outline-"] {
    border-color: var(--colors);
    color: transparent;
    background: #fff;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
}
.btn-glass-primary,
.btn-glass-golds,
.btn-glass-oceans,
.btn-glass-sages,
.btn-glass-roses,
.btn-glass-futures,
.btn-glass-mints,
.btn-glass-neons,
.btn-glass-snows,
.btn-glass-grays,
.btn-glass-whites,
.btn-glass-deeps {
    background: rgba(255, 255, 255, 0.08);
    backdrop-filter: blur(10px);
    border: 1px solid rgba(255, 255, 255, 0.2);
    color: inherit;
}
.btn-glass-primary:hover,
[class*="btn-glass-"]:hover {
    background: var(--colors);
    color: #fff;
}
/* ==== TEXT SYSTEM ==== */
/* ---- TEXT COLOR GRADIENT ---- */
[class^="txt-"],
[class*=" txt-"] {
    font-weight: 300;
    background: var(--texts);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    letter-spacing: 1px;
}
.text-transparent {
    color: transparent;
    -webkit-text-stroke: 1px rgba(0, 0, 0, 0.3);
}
/* ==== TILE ==== */
.tile {
    position: relative;
    overflow: hidden;
    border-radius: 10px;
    display: block;
    background: var(--colors);
    transition: .25s;
    width: 100%;
}
/* RESPONSIVE SIZE SYSTEM */
.tile.ratio-1 {
    width: clamp(50px, 22vw, 2cm);
    height: clamp(50px, 22vw, 2cm);
}
.tile.ratio-4 {
    width: clamp(80px, 32vw, 4cm);
    height: clamp(80px, 32vw, 4cm);
}
.tile.ratio-8 {
    width: clamp(100px, 42vw, 8cm);
    height: clamp(100px, 42vw, 8cm);
}
.tile.ratio-10 {
    width: 100%;
    aspect-ratio: 1/1;
}
/* CONTENT */
.tile-content {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    text-align: center;
    padding: clamp(.45rem, 2vw, 1rem);
    z-index: 2;
}
/* icon */
.tile-icon {
    font-size: clamp(0.85rem, 5vw, 1.25rem);
    font-family: var(--caption);
    margin-bottom: .45rem;
    line-height: 1;
}
/* title */
.tile-title {
    font-size: clamp(.65rem, 2.6vw, 0.85rem);
    font-weight: 600;
    font-family: var(--title);
    opacity: .85;
    text-transform: uppercase;
    line-height: 1.2;
    max-width: 100%;
    word-break: break-word;
}
/* subtitle */
.tile-subtitle {
    font-size: clamp(.45rem, 2vw, .55rem);
    font-family: var(--desc);
    line-height: 1.2;
    margin-top: .25rem;
    opacity: .85;
    max-width: 100%;
}
/* hover */
.tile:hover {
    transform: translateY(-4px);
    filter: brightness(1.08) saturate(1.08);
}
/* glow */
.tile::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    border-radius: inherit;
    box-shadow: inset 0 0 40px rgba(255, 255, 255, .08);
}
/* MOBILE */
@media (max-width:576px) {
    .tile {
        width: 100%;
    }
    .tile.ratio-1,
    .tile.ratio-4,
    .tile.ratio-8 {
        height: auto;
        aspect-ratio: 1/1;
    }
}
/* ====PREMIUM BLOCK SYSTEM==== */
.premium-block {
    position: relative;
    overflow: hidden;
    isolation: isolate;
    /* FIX penting */
    z-index: 1;
    display: flex;
    flex-direction: column;
    width: 100%;
    height: 100%;
    border-radius: 20px;
    background:
        linear-gradient(135deg,
            rgba(255, 255, 255, .10),
            rgba(255, 255, 255, .18)),
        var(--colors);
    backdrop-filter: blur(6px) saturate(120%);
    -webkit-backdrop-filter: blur(6px) saturate(120%);
    border: 1px solid rgba(255, 255, 255, .15);
    box-shadow:
        0 10px 35px rgba(0, 0, 0, .25),
        inset 0 1px 0 rgba(255, 255, 255, .08);
    color: var(--text-color);
}
.premium-block>* {
    position: relative;
    z-index: 1;
}
/* ==== HOVER ==== */
.premium-block:hover {
    transform: translateY(-4px);
    box-shadow:
        0 20px 50px rgba(0, 0, 0, .35),
        0 0 25px var(--glows);
}
/* ==== GLASS OVERLAY ==== */
.premium-block::before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(120deg,
            rgba(255, 255, 255, .18),
            transparent 40%);
    pointer-events: none;
}
.premium-block::after {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 2px;
    background: var(--glows);
    box-shadow:
        0 0 10px var(--glows),
        0 0 20px var(--glows),
        0 0 35px var(--glows);
    pointer-events: none;
}
/* ==== HEADER ==== */
.block-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 4px;
    padding: 1rem;
    border-bottom: 1px solid rgba(255, 255, 255, .08);
}
.block-header-left {
    display: flex;
    align-items: center;
    gap: 8px;
    flex: 1;
}
/* ICON */
.block-icon {
    width: 36px;
    height: 36px;
    font-size: 2.4rem;
    display: flex;
    align-items: center;
    justify-content: center;
}
/* TITLE */
.block-title {
    font-size: 1.1rem;
    font-weight: 600;
    text-transform: uppercase;
}
/* SUBTITLE */
.block-subtitle {
    font-size: .85rem;
    opacity: .75;
}
/* ==== BUTTON ==== */
.block-option .btn,
.block-header-right .btn {
    min-width: 38px;
    height: 38px;
    padding: 0 12px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    border-radius: 12px;
    background: rgba(255, 255, 255, .10);
    border: 1px solid rgba(255, 255, 255, .18);
    color: var(--text-color);
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    transition:
        transform .25s ease,
        box-shadow .25s ease,
        background .25s ease,
        border-color .25s ease;
    overflow: hidden;
    position: relative;
}
/* Hover */
.block-option .btn:hover,
.block-header-right .btn:hover {
    transform: translateY(-2px);
    box-shadow:
        0 0 12px var(--glows),
        0 0 24px rgba(255, 255, 255, .08);
}
/* Click */
.block-option .btn:active,
.block-header-right .btn:active {
    transform: scale(.96);
}
/* Focus */
.block-option .btn:focus,
.block-header-right .btn:focus {
    outline: none;
    box-shadow:
        0 0 0 2px rgba(255, 255, 255, .15),
        0 0 15px var(--glows);
}
/* Icon */
.block-option .btn i,
.block-header-right .btn i {
    font-size: 1rem;
    line-height: 1;
}
/* Icon Only */
.btn-icon-only {
    width: 38px;
    min-width: 38px;
    padding: 0;
}
/* Icon + Text */
.btn-icon-text {
    padding: 0 14px;
}
/* Mobile */
@media (max-width:576px) {
    .btn-icon-text span {
        display: none;
    }
    .btn-icon-text {
        width: 38px;
        min-width: 38px;
        padding: 0;
    }
}
/* ==== BODY ==== */
.block-body {
    flex: 1;
    padding: 1rem;
    position: relative;
    overflow: hidden;
}
.body-light {
    background: rgba(255, 255, 255, .85);
    color: rgba(20, 20, 20, 1);
}
.body-dark {
    background: rgba(15, 15, 20, .85);
    color: rgba(255, 255, 255, .95);
}
.body-op {
    position: relative;
    overflow: hidden;
    color: var(--text-light);
    /* fallback jika tidak ada gambar */
    background:
        linear-gradient(135deg,
            rgba(10, 10, 15, .65),
            rgba(20, 20, 30, .45));
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border-top: 1px solid rgba(255, 255, 255, .08);
    border-bottom: 1px solid rgba(255, 255, 255, .08);
}
.body-op.has-bg {
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
}
/* layer kaca gelap */
.body-op.has-bg::before {
    content: "";
    position: absolute;
    inset: 0;
    background:
        linear-gradient(135deg,
            rgba(0, 0, 0, .65),
            rgba(0, 0, 0, .35),
            rgba(0, 0, 0, .55));
    backdrop-filter: blur(8px);
    -webkit-backdrop-filter: blur(8px);
    pointer-events: none;
}
/* konten selalu di atas */
.body-op>* {
    position: relative;
    z-index: 2;
}
.body-scroll {
    overflow-y: auto;
    overflow-x: hidden;
    max-height: 280px;
    scrollbar-width: thin;
    background: rgba(250, 250, 250, .85);
    color: rgba(20, 20, 20, .95);
}
.body-scroll::-webkit-scrollbar {
    width: 6px;
}
.body-scroll::-webkit-scrollbar-track {
    background: transparent;
}
.body-scroll::-webkit-scrollbar-thumb {
    background: rgba(250, 250, 250, .85);
    border-radius: 10px;
}
.body-scroll::-webkit-scrollbar-thumb:hover {
    background: rgba(255, 255, 255, .55);
}
/* ==== FOOTER ==== */
.block-footer {
    padding: .85rem 1rem;
    border-top: 1px solid rgba(255, 255, 255, .1);
}
/* ==== MODAL FIX ==== */
.modal {
    z-index: 3000 !important;
}
.modal-backdrop {
    z-index: 2990 !important;
}
/* ==== UNIVERSAL LOADING STYLE ==== */
/* ---- WRAPPER ---- */
.ui-loading {
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 24px 24px;
    border-radius: 24px;
    position: relative;
    overflow: hidden;
    background: linear-gradient(135deg,
            rgba(20, 20, 20, .72),
            rgba(40, 40, 40, .45));
    border: 1px solid rgba(250, 250, 250, .08);
    backdrop-filter: blur(18px) saturate(180%);
    -webkit-backdrop-filter: blur(18px) saturate(180%);
    box-shadow: 0 10px 30px rgba(0, 0, 0, .25),
        inset 0 1px 0 rgba(250, 250, 250, .05);
}
/* ---- Glow line atas ---- */
.ui-loading::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 2px;
    background: linear-gradient(90deg,
            #14C8DC,
            #78FAFA,
            #3250FA);
    opacity: 0.85;
}
/* ---- SPINNER ---- */
.ui-loading-spinner {
    width: 36px;
    height: 36px;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    border: 3px solid rgba(250, 250, 250, .75);
    border-top-color: rgba(200, 150, 50);
    animation: uiSpin .8s linear infinite;
    box-shadow: 0 0 18px rgba(220, 50, 20, 0.55);
}
/* ---- TEXT ---- */
.ui-loading-text {
    font-size: .75rem;
    font-weight: 600;
    letter-spacing: .8px;
    text-transform: uppercase;
    color: rgba(250, 250, 250, .75);
    animation: uiPulse 1.5s ease infinite;
}
/* ---- DOTS ---- */
.ui-loading-dots::after {
    content: "";
    animation: uiDots 1.5s infinite;
}
/* ---- SIZES ---- */
.ui-loading-sm {
    padding: 14px;
    gap: 8px;
}
.ui-loading-sm .ui-loading-spinner {
    width: 32px;
    height: 32px;
}
.ui-loading-sm .ui-loading-text {
    font-size: .75rem;
}
.ui-loading-lg {
    padding: 40px 24px;
}
.ui-loading-lg .ui-loading-spinner {
    width: 58px;
    height: 58px;
}
.ui-loading-lg .ui-loading-text {
    font-size: .95rem;
}
/* ---- COLORS ---- */
.ui-loading-warning .ui-loading-spinner {
    border-top-color: #ffc107;
    box-shadow: 0 0 18px rgba(250, 193, 7, .35);
}
.ui-loading-success .ui-loading-spinner {
    border-top-color: #20c997;
    box-shadow: 0 0 18px rgba(32, 201, 151, .35);
}
.ui-loading-danger .ui-loading-spinner {
    border-top-color: #ff4d6d;
    box-shadow: 0 0 18px rgba(250, 77, 109, .35);
}
.ui-loading-primary .ui-loading-spinner {
    border-top-color: #4d8dff;
    box-shadow: 0 0 18px rgba(77, 141, 250, .35);
}
/* ---- ANIMATIONS ---- */
@keyframes uiSpin {
    to {
        transform: rotate(360deg);
    }
}
@keyframes uiPulse {
    0% {
        opacity: .45;
    }
    50% {
        opacity: 1;
    }
    100% {
        opacity: .45;
    }
}
@keyframes uiDots {
    0% {
        content: "";
    }
    33% {
        content: ".";
    }
    66% {
        content: "..";
    }
    100% {
        content: "...";
    }
}
/* ==== UNIVERSAL TOAST UI Fintech ==== */
/* ---- CONTAINER ---- */
.toast-container {
    position: fixed;
    top: 80px;
    left: 50%;
    transform: translateX(-50%);
    min-width: 60%;
    z-index: 1080;
    display: flex;
    flex-direction: column;
    gap: 10px;
}
/* ---- TOAST CARD ---- */
.ui-toast {
    width: 100%;
    position: relative;
    overflow: hidden;
    background: #fff;
    backdrop-filter: blur(20px) saturate(180%);
    -webkit-backdrop-filter: blur(20px) saturate(180%);
    box-shadow: var(--glows);
    pointer-events: auto;
}
/* Glow Line */
.ui-toast::before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 2px;
}
/* ---- HEADER ---- */
.ui-toast-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 4px;
    padding: 4px;
    background: var(--colors);
}
/* Left */
.ui-toast-left {
    display: flex;
    align-items: center;
    gap: 8px;
}
/* === ICON === */
.ui-toast-icon {
    width: 42px;
    height: 42px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: .95rem;
    font-weight: 700;
    color: var(--text-color);
}
/* === TITLE === */
.ui-toast-title {
    font-size: .95rem;
    font-weight: 400;
    font-family: var(--title);
    letter-spacing: .4px;
    text-transform: uppercase;
    color: var(--text-color);
}
/* === MESSAGE === */
.ui-toast-body {
    padding: 8px 14px;
    font-size: .75rem;
    font-weight: 500;
    font-family: var(--desc);
    line-height: 1.55;
    text-transform: capitalize;
    background: rgba(250, 250, 250, .85);
    color: rgba(20, 20, 20, 1);
}
.ui-toast.toast-hide {
    opacity: 0;
    transform: translateY(-12px);
    transition: all .25s ease;
}
/* tombol close */
.ui-toast .btn-close {
    height: 28px;
    width: 28px;
    margin-right: 12px;
    opacity: .8;
    transition: .2s;
}
.ui-toast .btn-close:hover {
    opacity: 1;
    transform: scale(1.05);
}
/* === PROGRESS BAR === */
.ui-toast-progress {
    height: 3px;
    width: 100%;
    background: rgba(250, 250, 250, .5);
    overflow: hidden;
}
.ui-toast-progress::before {
    content: "";
    display: block;
    width: 100%;
    height: 100%;
    animation: toastProgress linear forwards;
}
/* === ANIMATION === */
@keyframes toastSlide {
    from {
        opacity: 0;
        transform: translateX(40px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}
@keyframes toastProgress {
    from {
        width: 100%;
    }
    to {
        width: 0%;
    }
}
/* ============= WRAPPER ============= */
.shortcut-wrapper {
    position: fixed;
    right: 20px;
    bottom: 20px;
    z-index: 9999;
    display: flex;
    align-items: center;
    gap: 12px;
    transform: none;
    left: auto;
    top: auto;
}
/* ============= NAVIGATION ============= */
.shortcut-nav {
    display: flex;
    align-items: center;
    gap: 12px;
    transition: all .45s cubic-bezier(0.175, 0.285, 0.32, 1.275);
    background: transparent;
    backdrop-filter: blur(15px);
    -webkit-backdrop-filter: blur(15px);
}
/* Hidden State */
.shortcut-nav.hidden {
    opacity: 0;
    transform: translateX(40px) scale(.85);
    pointer-events: none;
}
/* ============= START MENU BUTTON ============= */
#toggle-shortcut {
    order: 99;
    width: 56px;
    height: 56px;
    border-radius: 18px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    color: #fff;
    background: linear-gradient(135deg,
            rgba(20, 20, 20, .92),
            rgba(40, 40, 40, .88));
    border: 1px solid rgba(250, 250, 250, .08);
    backdrop-filter: blur(18px);
    box-shadow: 0 10px 30px rgba(0, 0, 0, .35),
        inset 0 1px 0 rgba(250, 250, 250, .05);
    transition: all .35s ease;
}
/* Icon */
#toggle-shortcut i {
    font-size: 32px;
    color: #fff;
}
/* Hover */
#toggle-shortcut:hover {
    transform: translateY(-4px) scale(1.04);
    box-shadow: 0 0 20px rgba(20, 150, 240, .5),
        0 10px 35px rgba(50, 50, 50, .2);
}
/* Active */
#toggle-shortcut.active-toggle {
    background: linear-gradient(135deg,
            #14C8DC,
            #3250FA);
    box-shadow: 0 0 20px rgba(20, 200, 220, .45),
        0 10px 35px rgba(0, 0, 0, .45);
    color: #fff;
}
/* ============= SHORTCUT ITEM ============= */
.shortcut-item {
    position: relative;
    width: 50px;
    height: 50px;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(135deg,
            rgba(20, 20, 20, .92),
            rgba(40, 40, 40, .88));
    border: 1px solid rgba(250, 250, 250, .06);
    box-shadow: 0 6px 18px rgba(0, 0, 0, .25);
    transition: all .28s ease;
}
/* Link */
.shortcut-item a,
.popup-menu a {
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    color: #fff !important;
}
/* Icon */
.shortcut-item i {
    font-size: 18px;
}
/* Text */
.shortcut-item span {
    margin-top: 2px;
    font-size: 0.75rem;
    font-weight: 400;
    font-family: var(--help);
    letter-spacing: .5px;
    text-transform: uppercase;
    color: rgba(250, 250, 250, .75);
}
/* ============= HOVER / ACTIVE ============= */
.shortcut-item:hover,
.shortcut-item.active,
.popup-menu a:hover {
    transform: translateY(-5px) scale(1.03);
    background: linear-gradient(175deg,
            #14C8DC,
            #3250FA) !important;
    box-shadow: 0 0 18px rgba(20, 200, 220, .35),
        0 10px 30px rgba(0, 0, 0, .35);
}
.shortcut-item:hover span,
.shortcut-item.active span {
    color: #fff;
}
/* ============= POPUP MENU ============= */
.popup-menu {
    position: absolute;
    right: 0;
    bottom: 120%;
    display: none;
    flex-direction: column-reverse;
    gap: 10px;
    padding-bottom: 10px;
    z-index: 10001;
    transform: translateY(20px) scale(.8);
    opacity: 0;
}
/* Open */
.shortcut-item.open .popup-menu {
    display: flex !important;
    animation: popupSlideVertical .3s forwards;
}
/* Popup Button */
.popup-menu a {
    width: 50px;
    height: 50px;
    border-radius: 10px;
    background: linear-gradient(135deg,
            rgba(35, 35, 35, .95),
            rgba(55, 55, 55, .88));
    border: 1px solid rgba(250, 250, 250, .08);
    box-shadow: 0 8px 20px rgba(0, 0, 0, .25);
}
/* Popup Text */
.popup-menu span {
    margin-top: 2px;
    font-size: 0.75rem;
    font-weight: 400;
    font-family: var(--help);
    letter-spacing: .5px;
    text-transform: uppercase;
}
/* ============= ANIMATION ============= */
@keyframes popupSlideVertical {
    from {
        opacity: 0;
        transform: translateY(20px) scale(.8);
    }
    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}
/* ==================================================
   USER WIDGET — LUXURY GOLD / CRYPTO FOREX STYLE
================================================== */
.widget-user {
    width: 40%;
    margin-left: auto;
    display: flex;
    align-items: stretch;
    gap: 8px;
    padding: 8px;
    min-height: 150px;
    border-radius: 20px;
    overflow: hidden;
    position: relative;
    backdrop-filter: blur(20px);
    -webkit-backdrop-filter: blur(20px);
}
/* ---- PREMIUM GLASS ---- */
.user-glass {
    background: linear-gradient(145deg,
            rgba(255, 255, 255, .08),
            rgba(255, 255, 255, .03));
    border: 1px solid rgba(220, 190, 120, .22);
    box-shadow: inset 0 1px 1px rgba(255, 255, 255, .10),
        0 20px 60px rgba(0, 0, 0, .30),
        0 0 0 1px rgba(255, 210, 120, .04);
}
/* GOLD SHINE */
.widget-user::before {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(circle at top right,
            rgba(255, 220, 120, .18),
            transparent 40%);
    pointer-events: none;
}
/* ---- LEFT ---- */
.widget-user-left {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-width: 0;
}
.user-header {
    display: flex;
    align-items: center;
    gap: 8px;
}
/* ---- AVATAR ---- */
.user-avatar {
    width: 58px;
    height: 58px;
    border-radius: 10px;
    overflow: hidden;
    flex-shrink: 0;
    background: linear-gradient(145deg,
            rgba(255, 220, 140, .35),
            rgba(255, 255, 255, .03));
    border: 1px solid rgba(255, 220, 140, .30);
}
.user-avatar img {
    width: 100%;
    height: 100%;
    display: block;
    object-fit: contain;
}
/* ---- TEXT ---- */
.user-title {
    margin-top: 2px;
    margin: 0;
    font-size: 1.15rem;
    letter-spacing: 2px;
    color: rgba(250, 200, 100, 1);
    font-family: var(--title);
}
.user-label {
    display: block;
    margin-top: 4px;
    font-size: 0.75rem;
    font-weight: 200;
    color: rgba(200, 200, 200, .95);
    font-family: var(--desc);
}
.user-desc {
    margin-top: 0;
    color: rgba(200, 200, 200, .95);
    font-family: var(--help);
}
/* ---- BODY ---- */
.user-body {
    margin-top: 4px;
}
.user-body .p-2 {
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.user-body .item-stat {
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 4px;
    border-radius: 10px;
    background: linear-gradient(145deg,
            rgba(250, 250, 250, .06),
            rgba(250, 250, 250, .02));
    border: 1px solid rgba(250, 250, 250, .06);
}
.user-body .item-stat i {
    font-size: 28px;
    color: rgba(250, 200, 100, 1);
    padding-right: 10px;
}
.user-body .label {
    font-size: .75rem;
    text-transform: uppercase;
    color: rgba(250, 250, 250, .9);
}
.user-body .value {
    color: white;
    font-size: 1.05rem;
    font-weight: 400;
    font-family: var(--desc);
    padding-left: 10px;
}
/* ---- RIGHT PANEL ---- */
.widget-user-right {
    width: 160px;
    flex-shrink: 0;
}
.button-user-group {
    height: 100%;
    display: flex;
    flex-direction: column;
    gap: 10px;
}
/* BUTTON */
.button-user-group .btn {
    flex: 1;
    min-height: 58px;
    border-radius: 20px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 8px;
    text-align: center;
    text-decoration: none;
    color: white;
    background: rgba(50, 50, 100, 0.2);
    border: 1px solid rgba(250, 220, 220, .7);
    transition: .25s;
}
.button-user-group .btn:hover {
    transform: translateY(-3px);
    background: linear-gradient(145deg,
            rgba(255, 220, 120, .16),
            rgba(255, 255, 255, .06));
    box-shadow: 0 12px 30px rgba(220, 180, 90, .18);
}
.button-user-group .btn i {
    font-size: 1.45rem;
    padding-top: 10px;
    padding-bottom: 1px;
    color: rgba(250, 200, 100, 1);
}
.button-user-group .btn span {
    font-size: 0.85rem;
    font-family: var(--subtitle);
    text-transform: capitalize;
    padding-top: 1px;
    padding-bottom: 4px;
    color: rgb(250, 250, 250);
}
/* --------------------------------------------------------- */
/* --- Judul: Sertifikat Responsive --- */
/* --------------------------------------------------------- */
.sertifikat {
    max-width: 80%;
    width: 840px;
    aspect-ratio: 840 / 640;
    margin: 2rem auto;
    padding: 2rem;
    border: 8px solid transparent;
    border-image: linear-gradient(50deg,
            rgba(250, 250, 250, 0.9) 0%,
            rgba(250, 210, 100, 0.9) 10%,
            rgba(250, 180, 0, 0.9) 50%) 1;
    background: url('img/bg_sertifikat.webp') no-repeat center;
    background-size: cover;
    text-align: center;
    position: relative;
    border-radius: 1rem;
}
/* Judul */
.title {
    font-size: clamp(22px, 2vw, 38px);
    font-family: var(--caption);
    font-weight: bold;
    color: #2e5a2e;
}
/* Nama */
.nama {
    font-size: clamp(20px, 4vw, 38px);
    font-family: var(--label);
    font-weight: bold;
    text-decoration: underline;
    color: #10608f;
    margin-top: 2rem;
}
/* No ID */
.noid {
    font-size: clamp(16px, 2vw, 20px);
    font-family: var(--label);
    font-style: italic;
    font-weight: 400;
    color: #10608f;
}
/* Ucapan */
.ucapan {
    font-size: clamp(12px, 2.2vw, 22px);
    font-family: var(--help);
    margin: 2rem 0;
    font-style: italic;
    color: #7c7c7c;
}
/* Bonus */
.bonus {
    font-size: clamp(24px, 6vw, 52px);
    font-family: var(--desc);
    font-weight: bold;
    background: linear-gradient(50deg,
            rgba(250, 230, 0) 0%,
            rgba(250, 200, 50, 0.9) 10%,
            rgba(210, 120, 1) 50%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    color: transparent;
    text-shadow: 0 0 10px rgba(250, 240, 0);
}
/* Logo */
.logo88 {
    position: absolute;
    top: 1rem;
    right: 1rem;
    width: clamp(60px, 10vw, 100px);
    height: auto;
    max-height: 80px;
}
/* --- PORTAL OVERLAY --- */
#portal-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: radial-gradient(circle, #1a1a1a 0%, #000 100%);
    z-index: 99999;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    transition: 0.8s ease;
}
/* ===== FLOATING NEWS ===== */
#news-container {
    position: fixed;
    right: 20px;
    bottom: 5px;
    width: 40%;
    display: flex;
    flex-direction: column;
    gap: 8px;
    z-index: 999;
    max-height: calc(100vh - 120px);
    overflow-y: auto;
}
/* ---- CARD ---- */
.news-card {
    position: relative;
    display: flex;
    align-items: flex-start;
    gap: 4px;
    padding: 10px;
    overflow: hidden;
    border-radius: 10px;
    opacity: .78;
    transform: translateY(20px) scale(.96);
    transition: opacity .35s ease,
        transform .35s ease;
    backdrop-filter: blur(12px);
    pointer-events: auto;
}
#news-container::after {
    content: "";
    display: block;
    min-height: 80px;
    flex-shrink: 0;
}
.news-card.show {
    opacity: 1;
    transform: translateY(0) scale(1);
}
/* ---- ICON ---- */
.news-icon {
    width: 48px;
    height: 48px;
    min-width: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
}
.news-icon i {
    font-size: 1.85rem;
    line-height: 1;
    color: inherit;
}
/* ---- BODY ---- */
.news-body {
    border-left: rgba(220, 220, 220, .95);
    position: relative;
    flex: 1;
    min-width: 0;
    align-self: stretch;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 0;
}
/* ---- TITLE ---- */
.news-title {
    font-size: 0.95rem;
    font-weight: 400;
    line-height: 0.75;
    font-family: var(--title);
    color: inherit;
}
/* ---- DESC ---- */
.news-desc {
    position: absolute;
    top: 4px;
    right: 4px;
    white-space: nowrap;
    font-size: 1.15rem;
    font-weight: 400;
    line-height: 0.75;
    font-family: var(--help);
    color: inherit;
    text-align: right;
}
/* ---- SUBTITLE ---- */
.news-subtitle {
    font-size: 0.95rem;
    font-weight: 300;
    line-height: 1;
    color: inherit;
    font-family: var(--desc);
    margin-top: 5px;
    padding: 4px;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}
/* ---- PROGRESS ---- */
.news-progress {
    position: absolute;
    left: 0;
    bottom: 0;
    width: 100%;
    height: 2px;
    overflow: hidden;
}
.news-progress::before {
    content: "";
    position: absolute;
    inset: 0;
    background: rgba(250, 250, 250, 1);
    animation: progressBar linear forwards;
    animation-duration: var(--duration, 5s);
}
@keyframes progressBar {
    from {
        width: 100%;
    }
    to {
        width: 0%;
    }
}
/* --------------------------------------------------------- */
/* --- Tambahan media query kecil --- */
/* --------------------------------------------------------- */
/* Responsive HP */
@media (max-width: 720px) {
    .premium-block {
        border-radius: 20px;
    }
    .block-header {
        padding: .75rem;
    }
    .block-body {
        padding: .75rem;
    }
    .block-footer {
        padding: .75rem;
    }
    .block-icon {
        width: 44px;
        height: 44px;
        min-width: 44px;
    }
    .block-icon i {
        font-size: 1.05rem;
    }
    .block-title {
        font-size: .75rem;
    }
    .block-subtitle {
        font-size: .75rem;
    }
    .ui-loading {
        border-radius: 16px;
        padding: 18px 14px;
    }
    .ui-loading-spinner {
        width: 34px;
        height: 34px;
    }
    .ui-loading-text {
        font-size: .75rem;
    }
    /* Toast Reduced */
    .ui-toast{
        border-radius          : 14px;
        overflow               : hidden;
        background             : rgba(255,255,255,.96);
        backdrop-filter        : blur(8px);
        -webkit-backdrop-filter: blur(8px);
        box-shadow:
        0 4px 14px rgba(0,0,0,.08);
    }

    .ui-toast::before{
        height: 3px;
        background: var(--colors);
    }

    .ui-toast-header{
        padding: 6px 10px;
        gap: 8px;
        background: var(--colors);
        border-bottom: 1px solid rgba(0,0,0,.04);
    }

    .ui-toast-left{
        flex: 1;
        min-width: 0;
        gap: 10px;
    }

    .ui-toast-icon{
        width: 34px;
        height: 34px;
        flex-shrink: 0;
        border-radius: 10px;
        font-size: .85rem;
        background: var(--colors);
        color: var(--text-color);
    }

    .ui-toast-title{
        font-size: .72rem;
        font-weight: 600;
        letter-spacing: .8px;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }
    .ui-toast-body{
        padding: 10px 12px;
        font-size: .72rem;
        line-height: 1.6;
        font-weight: 500;
        text-transform: none;
        background: transparent;
        color: rgba(20,20,20,.9);
    }

    .ui-toast .btn-close{
        width: 24px;
        height: 24px;
        margin-right: 0;
        opacity: .55;
        transform: scale(.85);
    }

    .ui-toast .btn-close:hover{
        opacity: 1;
        transform: scale(.9);
    }
    .ui-toast-progress{
        height: 2px;
        background: rgba(0,0,0,.05);
    }

    .ui-toast-progress::before{
        background: var(--colors);
    }
    .ui-toast.toast-hide{
        opacity: 0;
        transform: translateY(-8px);
        transition:
            opacity .2s ease,
            transform .2s ease;
    }
    /* Shortcut-nav Reduced */
    .shortcut-wrapper {
        right: 12px;
        bottom: 12px;
        gap: 10px;
    }
    #toggle-shortcut {
        width: 52px;
        height: 52px;
    }
    .shortcut-item,
    .popup-menu a {
        width: 52px;
        height: 46px;
    }
    .sertifikat {
        padding: 1rem;
        border-width: 4px;
    }
    .nama {
        margin-top: 0.5rem;
    }
    .text-luxury {
        background: var(--texts-luxury);
        -webkit-background-clip: text;
        -webkit-text-fill-color: transparent;
        font-weight: 200;
        text-transform: uppercase;
        letter-spacing: 1px;
    }
    #news-container {
        position: fixed;
        right: 20px;
        bottom: 50px;
        width: 80%;
    }
    .news-left {
        width: 36px;
        min-width: 36px;
        gap: 4px;
    }
    .news-icon {
        width: 48px;
        height: 48px;
        display: flex;
    }
    .news-icon i {
        font-size: 1.05rem;
        font-weight: 500;
        line-height: 1;
        color: var(--text-color);
        margin: 0;
    }
    .news-desc {
        font-size: 0.95rem;
        font-weight: 300;
        line-height: 1;
    }
    .news-title {
        font-size: 0.85rem;
        font-weight: 400;
        line-height: 1.2;
    }
    .news-subtitle {
        font-size: 0.85rem;
        font-weight: 300;
    }
    .widget-user {
        width: 100%;
        margin-left: 0;
        flex-direction: row;
        min-height: 180px;
    }
    .widget-user-right {
        width: 120px;
        display: flex;
    }
    .button-user-group {
        display: flex;
        flex-direction: column;
        gap: 8px;
        height: 100%;
        width: 100%;
    }
    .button-user-group .btn {
        flex: 1;
        min-height: 52px;
        padding: 0;
    }
    /* icon only */
    .button-user-group .btn span,
    .button-user-group .btn-label {
        font-size: 0.75rem;
        font-family: var(--desc);
    }
    .button-user-group .btn i {
        margin: 0;
        font-size: 1.55rem;
    }
    .user-title {
        font-size: .95rem;
    }
    .user-label {
        font-size: .55rem;
    }
}