/* ===========================
   Binder Detail - Hero Section
   =========================== */

.binder-header {
    border-radius: 12px;
    padding: 28px 32px;
    margin-bottom: 24px;
    border: 1px solid rgba(102, 126, 234, 0.15);
    background: linear-gradient(135deg, rgba(102, 126, 234, 0.08) 0%, rgba(240, 112, 156, 0.06) 100%);
    position: relative;
    overflow: hidden;
}

.binder-header::before {
    content: '';
    position: absolute;
    top: -50%;
    right: -20%;
    width: 300px;
    height: 300px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(102, 126, 234, 0.06) 0%, transparent 70%);
    pointer-events: none;
}

.binder-header.has-cover {
    color: #fff;
    border-color: rgba(255, 255, 255, 0.25);
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.05);
}

.binder-header.has-cover .binder-header-title h2,
.binder-header.has-cover .binder-header-meta,
.binder-header.has-cover .binder-header-meta a,
.binder-header.has-cover .binder-header-meta span {
    color: #fff;
}

.binder-header.has-cover .binder-badge {
    background-color: rgba(255, 255, 255, 0.15);
    color: #fff;
    border-color: rgba(255, 255, 255, 0.2);
}

/* ===== Header Layout ===== */
.binder-header-top {
    display: flex;
    align-items: flex-start;
    gap: 20px;
    position: relative;
    z-index: 1;
}

.binder-color-indicator {
    width: 56px;
    height: 56px;
    border-radius: 12px;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
    flex-shrink: 0;
    position: relative;
}

.binder-header-title {
    flex: 1;
    min-width: 0;
}

.binder-header-title h2 {
    margin: 0 0 8px 0;
    font-size: 26px;
    font-weight: 700;
    color: #1e293b;
    line-height: 1.2;
}

.binder-creator-link {
    color: #667eea;
    text-decoration: none;
    font-weight: 500;
    transition: color 0.2s;
}

.binder-creator-link:hover {
    color: #5568d3;
    text-decoration: underline;
}

/* ===== Meta Info ===== */
.binder-header-meta {
    display: flex;
    align-items: center;
    gap: 16px;
    font-size: 13px;
    color: #64748b;
    flex-wrap: wrap;
    margin-top: 10px;
}

.binder-meta-item {
    display: flex;
    align-items: center;
    gap: 6px;
}

.binder-meta-item i {
    color: #667eea;
    font-size: 14px;
}

/* ===== Badges ===== */
.binder-badges {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 12px;
}

.binder-badge {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 4px 10px;
    border-radius: 20px;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.02em;
    border: 1px solid transparent;
}

.binder-badge-shared {
    background-color: rgba(34, 197, 94, 0.1);
    color: #16a34a;
    border-color: rgba(34, 197, 94, 0.2);
}

.binder-badge-default {
    background-color: rgba(102, 126, 234, 0.1);
    color: #667eea;
    border-color: rgba(102, 126, 234, 0.2);
}

.binder-badge-pokedex {
    background-color: rgba(239, 68, 68, 0.1);
    color: #dc2626;
    border-color: rgba(239, 68, 68, 0.2);
}

.binder-badge-private {
    background-color: rgba(100, 116, 139, 0.1);
    color: #64748b;
    border-color: rgba(100, 116, 139, 0.2);
}

/* ===== Dark Theme ===== */
.theme-dark .binder-header {
    background: linear-gradient(135deg, rgba(102, 126, 234, 0.08) 0%, rgba(240, 112, 156, 0.04) 100%);
    border-color: #334155;
}

.theme-dark .binder-header::before {
    background: radial-gradient(circle, rgba(102, 126, 234, 0.04) 0%, transparent 70%);
}

.theme-dark .binder-header:not(.has-cover) .binder-header-title h2 {
    color: #f1f5f9;
}

.theme-dark .binder-header:not(.has-cover) .binder-header-meta,
.theme-dark .binder-header:not(.has-cover) .binder-header-meta span,
.theme-dark .binder-header:not(.has-cover) .binder-meta-item {
    color: #94a3b8;
}

.theme-dark .binder-header:not(.has-cover) .binder-meta-item i {
    color: #818cf8;
}

.theme-dark .binder-creator-link {
    color: #818cf8;
}

.theme-dark .binder-creator-link:hover {
    color: #a5b4fc;
}

.theme-dark .binder-color-indicator {
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
}

.theme-dark .binder-badge-shared {
    background-color: rgba(34, 197, 94, 0.15);
    color: #4ade80;
    border-color: rgba(34, 197, 94, 0.25);
}

.theme-dark .binder-badge-default {
    background-color: rgba(102, 126, 234, 0.15);
    color: #818cf8;
    border-color: rgba(102, 126, 234, 0.25);
}

.theme-dark .binder-badge-pokedex {
    background-color: rgba(239, 68, 68, 0.15);
    color: #f87171;
    border-color: rgba(239, 68, 68, 0.25);
}

.theme-dark .binder-badge-private {
    background-color: rgba(100, 116, 139, 0.15);
    color: #94a3b8;
    border-color: rgba(100, 116, 139, 0.25);
}

/* ===== Responsive ===== */
@media (max-width: 576px) {
    .binder-header {
        padding: 20px;
    }

    .binder-header-top {
        gap: 14px;
    }

    .binder-color-indicator {
        width: 44px;
        height: 44px;
        border-radius: 10px;
    }

    .binder-header-title h2 {
        font-size: 20px;
    }

    .binder-header-meta {
        gap: 10px;
        font-size: 12px;
    }

    .binder-badges {
        gap: 6px;
    }

    .binder-badge {
        font-size: 10px;
        padding: 3px 8px;
    }
}

/* ===== Issue #2133 -- Binder sayfa izgarasi (varyant-ayri kutu modu + sanal sayfa) ===== */

/* Secilen izgara: sutun sayisi; sayfa boyutu (satir x sutun) JS'te data-binder-page-size'tan,
   CSS'ten bagimsiz. .cards-list eklendi ki ozgulluk catalog.css'teki
   .ct-grid[data-density="compact"] (0,2,0) kuralindan daha yuksek olsun (0,3,0) -- bu dosya
   catalog.css'ten ONCE yuklenir (BinderDetail @section Styles sirasi).
   Issue #2142 (AC4) -- secilen sutun sayisi kadar esit genislikte hucre, icerik alanini
   doldurur (260px tavani KALKTI; sadece 2x2'de anlamli bir tavan kalir, asagida). */
.cards-list.ct-grid[data-binder-cols] {
    grid-template-columns: repeat(var(--bd-cols), minmax(0, 1fr));
    justify-content: start;
}

.cards-list.ct-grid[data-binder-cols="2"] { --bd-cols: 2; }
.cards-list.ct-grid[data-binder-cols="3"] { --bd-cols: 3; }
.cards-list.ct-grid[data-binder-cols="4"] { --bd-cols: 4; }

/* Issue #2142 (K2) -- 2x2: tek tavanli duzen. 1fr ile hucre ~560px olurdu; en genis
   masaustundeki 3x3 hucresi kadar sinirlanir (360px), kalan bosluk iki yana esit dagilir.
   <=991px'de (icerik genisligi - bosluk)/2 zaten 360px'in altinda oldugu icin bu kural
   fiilen etkisiz kalir (yalniz genis masaustunde devreye girer). */
.cards-list.ct-grid[data-binder-cols="2"] {
    --bd-cell-max: 360px;
    grid-template-columns: repeat(var(--bd-cols), minmax(0, var(--bd-cell-max)));
    justify-content: center;
}

/* Grid item'in varsayilan min-width:auto'su stepper satirinin min-content'ine genisleyip
   tasabilir (.ct-card'ta min-width tanimli degil) -- yatay tasma/scroll olmasin diye. */
.cards-list.ct-grid[data-binder-cols] > .single-card {
    min-width: 0;
}

/* Tavanlar (AC9): secilen sutun ekrana sigmazsa DUSER, asla artmaz. Sayfa boyutu (satir x sutun,
   JS'te data-binder-page-size) sabit kalir -- yalniz gorsel sutun sayisi degisir.
   2x2 tavani (360px) <=991px'de bu kurallardan ONCE zaten (icerik genisligi - bosluk)/2 < 360
   oldugu icin fiilen etkisiz -- yalniz genis masaustunde gorunur bir sinir koyar. */
@media (max-width: 991.98px) {
    .cards-list.ct-grid[data-binder-cols="4"] { --bd-cols: 3; }
}

@media (max-width: 640px) {
    .cards-list.ct-grid[data-binder-cols="3"],
    .cards-list.ct-grid[data-binder-cols="4"] { --bd-cols: 2; }
}

/* Sayfa ayirici (AC7/AC8) -- JS ile eklenir/kaldirilir (binder-detail.js), sunucu basmaz. */
.bd-page-divider {
    grid-column: 1 / -1;
    display: flex;
    align-items: center;
    gap: var(--space-3);
    color: var(--fg-3);
    font-size: var(--fs-xs);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .04em;
    margin: var(--space-2) 0;
}

.bd-page-divider::before,
.bd-page-divider::after {
    content: "";
    flex: 1;
    height: 1px;
    background: var(--border-1);
}

/* Varyant rozeti (AC4) -- kutu modunda gorsel kosesine varyant etiketi basar. */
.bd-box-variant-badge {
    position: absolute;
    top: var(--space-2);
    left: var(--space-2);
    z-index: 2;
    padding: 2px var(--space-2);
    border-radius: var(--radius-pill);
    background: var(--bg-glass);
    color: var(--fg-1);
    border: 1px solid var(--border-1);
    font-size: var(--fs-xs);
    font-weight: 600;
    max-width: calc(100% - 2 * var(--space-2));
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    pointer-events: none;
}

/* ===== Issue #2142 -- Toolbar inline binder ayarlari (yalniz sahip) ===== */
.bd-inline-settings {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--space-2);
    min-width: 0;
    max-width: 100%;
}

/* m1 (reviewer) -- aria-busy YERINE JS-toggled sinif: bir ARIA live region'in (.bd-inline-status)
   atasina aria-busy="true" koymak bazi ekran okuyucularda duyurulari bastirir; disabled zaten
   yeterli erisebilirlik sinyali, bu sinif yalniz gorsel (imlec) geri bildirim icindir. */
.bd-inline-settings.is-saving { cursor: progress; }

/* Secili durum (toggle + segment): token'li, light/dark ayni kural (degiskenler temaya gore
   degisir, sabit hex YOK). */
.bd-inline-settings .btn-check:checked + .ct-btn {
    background: var(--bg-tint);
    border-color: var(--color-brand);
    color: var(--color-brand);
}

/* label odak almaz -- klavye odagi gizli input'ta; halkayi label'a tasi. */
.bd-inline-settings .btn-check:focus-visible + .ct-btn {
    box-shadow: var(--focus-ring);
}

.bd-inline-settings .btn-check:disabled + .ct-btn {
    opacity: .55;
    pointer-events: none;
}

/* Izgara segmenti: bitisik butonlar. */
.bd-grid-seg {
    display: inline-flex;
    align-items: center;
}

.bd-grid-seg-icon {
    color: var(--fg-3);
    margin-right: var(--space-2);
}

.bd-grid-seg .bd-seg-btn {
    min-width: 44px;
    border-radius: 0;
    margin-left: -1px;
    font-variant-numeric: tabular-nums;
}

.bd-grid-seg .bd-seg-btn:first-of-type { margin-left: 0; border-radius: var(--radius-md) 0 0 var(--radius-md); }
.bd-grid-seg .bd-seg-btn:last-of-type { border-radius: 0 var(--radius-md) var(--radius-md) 0; }

.bd-grid-seg .btn-check:checked + .bd-seg-btn,
.bd-grid-seg .btn-check:focus-visible + .bd-seg-btn {
    position: relative;
    z-index: 1;
}

.bd-inline-status {
    color: var(--fg-3);
    font-size: var(--fs-xs);
}

.bd-inline-status:empty { display: none; }

/* Mobil: touch target >= 44px (proje kurali 2.3). Toolbar zaten flex-wrap (catalog.css). */
@media (max-width: 767.98px) {
    .bd-inline-settings .ct-btn-sm { min-height: 44px; }
}
