/* ==========================================================
   HSI APP
   BASE
   ========================================================== */

body{

    margin:0;

    font-family:'Inter',sans-serif;

    font-size:14px;

    line-height:1.5;

    background:var(--bg);

    color:var(--text);

    transition:background var(--transition),
               color var(--transition);

}

button{

    font-family:inherit;

}

a{

    color:inherit;

    text-decoration:none;

}

a:hover{

    color:var(--primary);

}

/* ==========================================================
   TOPBAR
   ========================================================== */

.km-topbar{

    position:fixed;

    top:0;
    left:0;
    right:0;

    z-index:3000;

    height:60px;

    display:flex;

    align-items:center;

    justify-content:space-between;

    padding:0 18px;

    background:var(--topbar-bg);

    border-bottom:1px solid var(--border);

    box-shadow:var(--shadow-sm);

    transition:var(--transition);

}

.km-topbar-space{

    height:5px;

}

.km-topbar-left{

    display:flex;

    align-items:center;

    gap:14px;

    min-width:0;

}

/* ==========================================================
   LOGO
   ========================================================== */

.km-topbar-logo{

    height:42px;

    padding:0 10px;

    display:flex;

    align-items:center;

    justify-content:center;
}

.km-topbar-logo img{

    width:auto;

    height:28px;

    object-fit:contain;

}

/* ==========================================================
   USER
   ========================================================== */

.km-topbar-user{

    min-width:0;

}

.km-topbar-greeting{

    font-size:11px;

    color:var(--text-muted);

    line-height:1.2;

}

.km-topbar-name{

    font-size:14px;

    font-weight:700;

    color:var(--text);

    white-space:nowrap;

    overflow:hidden;

    text-overflow:ellipsis;

    max-width:180px;

}

/* ==========================================================
   POINT
   ========================================================== */

.km-topbar-point{

    height:36px;

    padding:0 14px;

    display:flex;

    align-items:center;

    justify-content:center;

    border-radius:999px;

    background:var(--primary-light);

    color:var(--primary);

    font-size:13px;

    font-weight:700;

    border:1px solid rgba(37,99,235,.10);

}

/* ==========================================================
   MENU GRID
   ========================================================== */

.km-menu-grid{

    display:grid;

    grid-template-columns:repeat(4,1fr);

    gap:16px;

    margin-top:0px;

}

/* ==========================================================
   MENU CARD
   ========================================================== */

.km-menu-card{

    position:relative;

    display:flex;

    flex-direction:column;

    align-items:center;

    justify-content:center;

    gap:0px;

    min-height:80px;

    padding:0px 12px;

    background:var(--card-bg);

    border:1px solid var(--border);

    border-radius:var(--radius-lg);

    box-shadow:var(--shadow);

    transition:var(--transition);

    color:inherit;

    overflow:hidden;

}

.km-menu-card:hover{

    transform:translateY(-2px);

    border-color:var(--primary-light);

    box-shadow:var(--shadow-lg);

}

.km-menu-card.active{

    background:var(--primary);

    border-color:var(--primary);

}

.km-menu-card.active .km-menu-text,

.km-menu-card.active .km-menu-icon{

    color:#fff;

}

/* ==========================================================
   ICON
   ========================================================== */

.km-menu-icon{

    width:46px;

    height:46px;

    display:flex;

    align-items:center;

    justify-content:center;

    border-radius:12px;

    background:var(--primary-light);

    color:#060d34;

    font-size:24px;

    transition:var(--transition);

}

/* ==========================================================
   TEXT
   ========================================================== */

.km-menu-text{

    font-size:13px;

    font-weight:600;

    color:var(--text);

    text-align:center;

    line-height:1.4;

}

/* ==========================================================
   BADGE
   ========================================================== */

.km-menu-badge{

    position:absolute;

    top:10px;

    right:10px;

    min-width:20px;

    height:20px;

    padding:0 6px;

    display:flex;

    align-items:center;

    justify-content:center;

    border-radius:999px;

    background:var(--danger);

    color:#fff;

    font-size:10px;

    font-weight:700;

}

/* ==========================================================
   MOBILE
   ========================================================== */

@media(max-width:768px){

    .km-menu-grid{

        gap:12px;

    }

    .km-menu-card{

        min-height:60px;

        padding:0px 14px;

    }

    .km-menu-icon{

        width:42px;

        height:42px;

        font-size:22px;

    }

    .km-menu-text{

        font-size:12px;

    }

}

/* ==========================================================
   NEWS & EVENT CARD
   ========================================================== */

.km-news-card,
.km-event-card{

    position:relative;

    margin-top:18px;

    padding:18px;

    background:var(--card-bg);

    border:1px solid var(--border);

    border-radius:var(--radius-lg);

    box-shadow:var(--shadow);

}

/* ==========================================================
   HEADER BADGE
   ========================================================== */

.km-news-badge,
.km-event-badge{

    position:absolute;

    top:14px;

    right:14px;

    padding:4px 10px;

    border-radius:999px;

    font-size:11px;

    font-weight:700;

}

.km-news-badge{

    background:#FEF2F2;

    color:var(--danger);

}

.km-event-badge{

    background:#ECFDF5;

    color:var(--success);

}

/* ==========================================================
   WRAPPER
   ========================================================== */

.km-news-wrapper,
.km-event-wrapper{

    width:100%;

    overflow:hidden;

}

.km-news-slider,
.km-event-slider{

    display:flex;

    flex-direction:column;

    transition:transform .35s ease;

}

/* ==========================================================
   ITEM
   ========================================================== */

.km-news-item,
.km-event-item{

    display:flex;

    align-items:center;

    gap:14px;

    min-height:72px;

    padding:10px 0;

    color:inherit;

}

/* ==========================================================
   IMAGE
   ========================================================== */

.km-news-image{

    width:56px;

    height:56px;

    border-radius:12px;

    object-fit:cover;

}

/* ==========================================================
   NEWS ICON
   ========================================================== */

.km-news-icon{

    width:56px;

    height:56px;

    display:flex;

    align-items:center;

    justify-content:center;

    border-radius:12px;

    background:var(--primary-light);

    color:var(--primary);

    font-size:22px;

}

/* ==========================================================
   EVENT DATE
   ========================================================== */

.km-event-date{

    width:56px;

    height:56px;

    display:flex;

    flex-direction:column;

    justify-content:center;

    align-items:center;

    border-radius:12px;

    background:var(--primary-light);

}

.km-event-day{

    font-size:18px;

    font-weight:700;

    color:var(--primary);

    line-height:1;

}

.km-event-month{

    margin-top:4px;

    font-size:10px;

    font-weight:600;

    color:var(--text-muted);

    text-transform:uppercase;

}

/* ==========================================================
   CONTENT
   ========================================================== */

.km-news-content,
.km-event-content{

    flex:1;

    min-width:0;

}

/* ==========================================================
   TITLE
   ========================================================== */

.km-news-title,
.km-event-title{

    font-size:14px;

    font-weight:600;

    color:var(--text);

    line-height:1.45;

    margin-bottom:4px;

    overflow:hidden;

    display:-webkit-box;

    -webkit-line-clamp:2;

    -webkit-box-orient:vertical;

}

/* ==========================================================
   META
   ========================================================== */

.km-news-category,
.km-event-location{

    font-size:12px;

    color:var(--text-muted);

}

/* ==========================================================
   ARTIKEL
   ========================================================== */

.km-artikel-section{

    margin-top:24px;

}

.km-artikel-header{

    margin-bottom:18px;

}

.km-artikel-heading{

    font-size:20px;

    font-weight:700;

    color:var(--text);

}

/* ==========================================================
   FILTER
   ========================================================== */

.km-artikel-filter{

    display:flex;

    gap:10px;

    overflow:auto;

    margin-bottom:20px;

    padding-bottom:4px;

}

.km-artikel-select{

    min-width:110px;

    height:40px;

    padding:0 12px;

    border:1px solid var(--border);

    border-radius:var(--radius);

    background:var(--surface);

    color:var(--text);

    font-size:13px;

}

/* ==========================================================
   LIST
   ========================================================== */

.km-artikel-list{

    display:flex;

    flex-direction:column;

}

.km-artikel-item{

    padding:5px 0;

    border-bottom:1px solid var(--border);

}

.km-artikel-link{

    display:block;

}

/* ==========================================================
   TITLE
   ========================================================== */

.km-artikel-title{

    font-size:16px;

    font-weight:600;

    color:var(--text);

    line-height:1.5;

    margin-bottom:0px;

}

/* ==========================================================
   META
   ========================================================== */

.km-artikel-meta-line{

    display:flex;

    flex-wrap:wrap;

    gap:8px;

    font-size:12px;

    color:var(--text-muted);

}

.km-dot{

    opacity:.5;

}

/* ==========================================================
   BADGE
   ========================================================== */

.km-artikel-meta{

    display:flex;

    gap:8px;

    flex-wrap:wrap;

    margin:12px 0;

}

.km-artikel-badge{

    padding:5px 10px;

    border-radius:999px;

    background:var(--primary-light);

    color:var(--primary);

    font-size:11px;

    font-weight:600;

}

/* ==========================================================
   ACTION
   ========================================================== */

.km-artikel-actions{

    display:flex;

    gap:8px;

    margin-top:14px;

}

.km-artikel-action{

    height:34px;

    padding:0 12px;

    display:flex;

    align-items:center;

    justify-content:center;

    border:1px solid var(--border);

    border-radius:var(--radius-sm);

    background:var(--surface);

    color:var(--text);

    font-size:13px;

    font-weight:600;

    transition:var(--transition);

}

.km-artikel-action:hover{

    background:var(--surface-hover);

    border-color:var(--primary-light);

    color:var(--primary);

}

/* ==========================================================
   PAGINATION
   ========================================================== */

.km-pagination{

    display:flex;

    justify-content:center;

    gap:8px;

    margin-top:24px;

    flex-wrap:wrap;

}

.km-page-btn{

    min-width:38px;

    height:38px;

    padding:0 12px;

    display:flex;

    align-items:center;

    justify-content:center;

    border:1px solid var(--border);

    border-radius:var(--radius);

    background:var(--surface);

    color:var(--text);

    font-size:13px;

    font-weight:600;

    transition:var(--transition);

}

.km-page-btn:hover{

    background:var(--surface-hover);

    color:var(--primary);

}

.km-page-btn.active{

    background:var(--primary);

    border-color:var(--primary);

    color:#fff;

}

.km-page-btn:first-child,
.km-page-btn:last-child{

    font-size:18px;

}

/* ==========================================================
   GLOBAL CONTENT
   ========================================================== */

#kmAppContent,
.km-forum-detail-page{

    width:100%;

    max-width:820px;

    margin:0 auto;

    padding-bottom:12px;

}

/* ==========================================================
   FORUM TOPBAR
   ========================================================== */

.km-forum-detail-top{

    position:sticky;

    top:60px;

    z-index:50;

    display:flex;

    align-items:center;

    gap:14px;

    padding:14px 18px;

    background:var(--surface);

    border-bottom:1px solid var(--border);

}

.km-back-button{

    width:38px;

    height:38px;

    display:flex;

    align-items:center;

    justify-content:center;

    border:none;

    border-radius:var(--radius);

    background:var(--surface-hover);

    color:var(--text);

    cursor:pointer;

    transition:var(--transition);

}

.km-back-button:hover{

    background:var(--primary-light);

    color:var(--primary);

}

.km-forum-detail-title{

    font-size:18px;

    font-weight:700;

    color:var(--text);

}

/* ==========================================================
   THREAD
   ========================================================== */

.km-thread-card{

    margin:20px;

    padding:24px;

    background:var(--card-bg);

    border:1px solid var(--border);

    border-radius:var(--radius-lg);

    box-shadow:var(--shadow);

}

.km-thread-user{

    display:flex;

    align-items:center;

    gap:14px;

    margin-bottom:18px;

}

.km-thread-avatar{

    width:48px;

    height:48px;

    border-radius:50%;

    object-fit:cover;

}

.km-thread-name{

    font-size:15px;

    font-weight:700;

    color:var(--text);

}

.km-thread-date{

    font-size:12px;

    color:var(--text-muted);

}

.km-thread-title{

    font-size:24px;

    font-weight:700;

    line-height:1.4;

    color:var(--text);

    margin-bottom:18px;

}

.km-thread-content{

    color:var(--text);

    line-height:1.8;

    font-size:15px;

}

.km-thread-stats{

    display:flex;

    gap:20px;

    margin-top:20px;

    padding-top:18px;

    border-top:1px solid var(--border);

    color:var(--text-muted);

    font-size:13px;

}

/* ==========================================================
   REPLIES
   ========================================================== */

.km-replies-wrapper{

    padding:0 20px;

}

.km-reply-item{

    display:flex;

    gap:14px;

    align-items:flex-start;

    margin-bottom:18px;

}

.km-reply-avatar{

    width:42px;

    height:42px;

    border-radius:50%;

    object-fit:cover;

}

.km-reply-bubble{

    flex:1;

    padding:16px;

    background:var(--card-bg);

    border:1px solid var(--border);

    border-radius:var(--radius);

}

.km-reply-top{

    display:flex;

    justify-content:space-between;

    align-items:center;

    margin-bottom:10px;

}

.km-reply-name{

    font-size:14px;

    font-weight:700;

    color:var(--text);

}

.km-reply-time{

    font-size:11px;

    color:var(--text-muted);

}

.km-reply-text{

    line-height:1.7;

    color:var(--text);

    font-size:14px;

}

.km-reply-footer{

    display:flex;

    gap:12px;

    margin-top:14px;

}

.km-reply-btn,
.km-reply-action{

    border:none;

    background:none;

    color:var(--text-muted);

    cursor:pointer;

    transition:var(--transition);

}

.km-reply-btn:hover,
.km-reply-action:hover{

    color:var(--primary);

}

/* ==========================================================
   REPLY BOX
   ========================================================== */

.km-reply-box{

    position:sticky;

    bottom:90px;

    display:flex;

    gap:12px;

    padding:16px;

    background:var(--surface);

    border-top:1px solid var(--border);

}

.km-reply-input{

    flex:1;

    min-height:48px;

    padding:14px;

    border:1px solid var(--border);

    border-radius:var(--radius);

    background:var(--input-bg);

    color:var(--text);

    resize:none;

    outline:none;

}

.km-send-btn{

    padding:0 20px;

    border:none;

    border-radius:var(--radius);

    background:var(--primary);

    color:#fff;

    font-weight:600;

    cursor:pointer;

    transition:var(--transition);

}

.km-send-btn:hover{

    background:var(--primary-hover);

}

/* ==========================================================
   MODAL BACKDROP
   ========================================================== */

.km-modal-backdrop,
.km-forum-modal{

    position:fixed;

    inset:0;

    display:none;

    align-items:center;

    justify-content:center;

    padding:20px;

    background:rgba(15,23,42,.45);

    backdrop-filter:blur(6px);

    z-index:5000;

}

.km-modal-backdrop.active,
.km-forum-modal.show{

    display:flex;

}

/* ==========================================================
   MODAL
   ========================================================== */

.km-modal,
.km-forum-modal-box{

    width:100%;

    max-width:560px;

    padding:24px;

    background:var(--card-bg);

    border:1px solid var(--border);

    border-radius:var(--radius-lg);

    box-shadow:var(--shadow-lg);

    animation:kmModalUp .25s ease;

}

@keyframes kmModalUp{

    from{

        opacity:0;

        transform:translateY(16px);

    }

    to{

        opacity:1;

        transform:translateY(0);

    }

}

/* ==========================================================
   HEADER
   ========================================================== */

.km-modal-header{

    display:flex;

    justify-content:space-between;

    align-items:center;

    margin-bottom:20px;

}

.km-modal-title,
.km-forum-heading{

    font-size:20px;

    font-weight:700;

    color:var(--text);

}

.km-forum-subtitle{

    margin-bottom:18px;

    color:var(--text-muted);

    font-size:13px;

}

.km-modal-close,
.km-forum-close{

    width:38px;

    height:38px;

    border:none;

    border-radius:var(--radius);

    background:var(--surface-hover);

    color:var(--text);

    cursor:pointer;

    transition:var(--transition);

}

.km-modal-close:hover,
.km-forum-close:hover{

    background:var(--primary-light);

    color:var(--primary);

}

/* ==========================================================
   FORM
   ========================================================== */

.km-modal-form{

    display:flex;

    flex-direction:column;

    gap:14px;

}

.km-modal-input,
.km-modal-textarea,
.km-forum-input,
.km-forum-textarea{

    width:100%;

    padding:14px;

    border:1px solid var(--border);

    border-radius:var(--radius);

    background:var(--input-bg);

    color:var(--text);

    outline:none;

}

.km-modal-textarea,
.km-forum-textarea{

    min-height:140px;

    resize:vertical;

}

.km-modal-submit,
.km-forum-submit{

    width:100%;

    height:46px;

    border:none;

    border-radius:var(--radius);

    background:var(--primary);

    color:#fff;

    font-weight:600;

    cursor:pointer;

    transition:var(--transition);

}

.km-modal-submit:hover,
.km-forum-submit:hover{

    background:var(--primary-hover);

}

/* ==========================================================
   NEW THREAD BUTTON
   ========================================================== */

.km-new-thread-btn{

    display:inline-flex;

    align-items:center;

    gap:8px;

    padding:10px 16px;

    border:none;

    border-radius:var(--radius);

    background:var(--primary);

    color:#fff;

    font-weight:600;

    cursor:pointer;

    transition:var(--transition);

}

.km-new-thread-btn:hover{

    background:var(--primary-hover);

}

/* ==========================================================
   GAME
   ========================================================== */

.km-game-fullscreen{

    position:fixed;

    inset:0;

    z-index:9999;

    background:var(--bg);

}

.km-game-frame{

    width:100%;

    height:100%;

    border:none;

    display:block;

}

/* ==========================================================
   COMMON BUTTON
   ========================================================== */

.km-btn{

    display:inline-flex;

    align-items:center;

    justify-content:center;

    gap:8px;

    height:40px;

    padding:0 16px;

    border:none;

    border-radius:var(--radius);

    background:var(--primary);

    color:#fff;

    font-size:13px;

    font-weight:600;

    cursor:pointer;

    transition:var(--transition);

}

.km-btn:hover{

    background:var(--primary-hover);

}

.km-btn-read{

    background:var(--surface);

    color:var(--text);

    border:1px solid var(--border);

}

.km-btn-read:hover{

    background:var(--surface-hover);

}

.km-btn-diskusi{

    background:var(--primary);

}

.km-btn-diskusi:hover{

    background:var(--primary-hover);

}

/* ==========================================================
   EMPTY STATE
   ========================================================== */

.km-empty{

    padding:48px 20px;

    text-align:center;

    color:var(--text-muted);

}

.km-empty i{

    display:block;

    margin-bottom:14px;

    font-size:40px;

    color:var(--primary);

}

.km-empty h3{

    margin:0 0 8px;

    font-size:18px;

    color:var(--text);

}

.km-empty p{

    margin:0;

    line-height:1.6;

}

/* ==========================================================
   LOADING
   ========================================================== */

.km-loading{

    display:flex;

    justify-content:center;

    align-items:center;

    padding:40px;

}

.km-loading::after{

    content:"";

    width:28px;

    height:28px;

    border:3px solid var(--border);

    border-top-color:var(--primary);

    border-radius:50%;

    animation:kmSpin .7s linear infinite;

}

@keyframes kmSpin{

    to{

        transform:rotate(360deg);

    }

}

/* ==========================================================
   CONTENT SPACING
   ========================================================== */

.km-section{

    margin-top:24px;

}

.km-section:first-child{

    margin-top:0;

}

/* ==========================================================
   CARD HOVER
   ========================================================== */

.km-card-hover{

    transition:var(--transition);

}

.km-card-hover:hover{

    transform:translateY(-2px);

    box-shadow:var(--shadow-lg);

}

/* ==========================================================
   SCROLLBAR
   ========================================================== */

::-webkit-scrollbar{

    width:10px;

    height:10px;

}

::-webkit-scrollbar-thumb{

    background:#cbd5e1;

    border-radius:999px;

}

::-webkit-scrollbar-thumb:hover{

    background:#94a3b8;

}

/* ==========================================================
   RESPONSIVE
   ========================================================== */

@media (max-width:992px){

    #kmAppContent,
    .km-forum-detail-page{

        max-width:100%;

        padding-left:0;

        padding-right:0;

    }

}

@media (max-width:768px){

    .km-topbar{

        padding:0 14px;

    }

    .km-topbar-name{

        max-width:120px;

    }

    .km-thread-card{

        margin:16px 0;

        padding:18px;

    }

    .km-replies-wrapper{

        padding:0;

    }

    .km-reply-box{

        bottom:80px;

        padding:12px;

    }

    .km-artikel-actions{

        flex-wrap:wrap;

    }

}

@media (max-width:576px){

    .km-menu-grid{

        grid-template-columns:repeat(5,1fr);

    }

    .km-topbar-point{

        display:none;

    }

    .km-thread-title{

        font-size:20px;

    }

}

.km-artikel-footer{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
}

.km-artikel-meta-line{
    display:flex;
    align-items:center;
    gap:4px;
    flex:1;
    min-width:0;
    overflow:hidden;
    white-space:nowrap;
}

.km-artikel-penulis{
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
}

.km-artikel-actions{
    display:flex;
    gap:6px;
    flex-shrink:0;
}

/* ==========================================================
   PRINT
   ========================================================== */

@media print{

    .km-topbar,
    .km-bottom-nav,
    .km-modal-backdrop,
    .km-forum-modal{

        display:none !important;

    }

}

#kmHomeMenu,
#kmDivider{

    transition:
        opacity .25s ease,
        transform .25s ease;

}

.focus-mode #kmHomeMenu,
.focus-mode #kmDivider{

    opacity:0;

    transform:translateY(-20px);

    pointer-events:none;

    height:0;

    overflow:hidden;

    margin:0;

}

/* ==========================================================
   LEARNING ARABIC
========================================================== */

.arabic-mode {
    direction: rtl;
}

.arabic-mode .header {
    direction: rtl;
}

.arabic-mode .header h1 {
    font-size: 24px;
    line-height: 1.5;
}

.arabic-mode .header p {
    font-size: 16px;
    line-height: 1.8;
}

.arabic-mode .level-card {
    height: 110px;
}

.arabic-mode .level-title {
    font-size: 60px;
    line-height: 1.7;
    font-weight: 700;
    text-align: center;
    direction: rtl;
}

@media (max-width:576px){

   .arabic-mode .level-card {
        height: 110px;
    }

    .arabic-mode .level-title {
        font-size: 50px;
        line-height: 1.7;
    }
}