/* =========================================================
   COMPONENTS
   Portfolio: Lekan Olowookere
   Version: 1.0
========================================================= */

/* ===========================
   PRIMARY BUTTON
=========================== */

.btn{

    display:inline-flex;

    align-items:center;

    justify-content:center;

    gap:.75rem;

    padding:1rem 2rem;

    border:none;

    border-radius:var(--radius-pill);

    cursor:pointer;

    font-weight:var(--fw-semibold);

    transition:var(--transition-normal);

    white-space:nowrap;
}

.btn-primary{

    background:var(--gradient-primary);

    color:#fff;

    box-shadow:var(--shadow-md);
}

.btn-primary:hover{

    transform:translateY(-5px);

    box-shadow:var(--shadow-lg);
}

.btn-primary:active{

    transform:translateY(-2px);
}

/* ===========================
   SECONDARY BUTTON
=========================== */

.btn-secondary{

    background:transparent;

    border:1px solid var(--border-color);

    color:var(--text-primary);

    backdrop-filter:blur(var(--blur-md));
}

.btn-secondary:hover{

    background:var(--bg-glass);

    border-color:var(--color-primary);

    transform:translateY(-4px);
}

/* ===========================
   OUTLINE BUTTON
=========================== */

.btn-outline{

    border:2px solid var(--color-primary);

    color:var(--color-primary);

    background:transparent;
}

.btn-outline:hover{

    background:var(--color-primary);

    color:#fff;
}

/* ===========================
   GLASS CARD
=========================== */

.glass-card{

    background:var(--bg-glass);

    border:1px solid var(--border-color);

    backdrop-filter:blur(var(--blur-lg));

    border-radius:var(--radius-xl);

    transition:var(--transition-normal);

    overflow:hidden;
}

.glass-card:hover{

    transform:translateY(-8px);

    border-color:rgba(59,130,246,.35);

    box-shadow:var(--shadow-glow);
}

/* ===========================
   STANDARD CARD
=========================== */

.card{

    background:var(--bg-card);

    border-radius:var(--radius-xl);

    border:1px solid var(--border-color);

    padding:2rem;

    transition:var(--transition-normal);
}

.card:hover{

    transform:translateY(-8px);

    background:var(--bg-card-hover);
}

/* ===========================
   KPI CARD
=========================== */

.kpi-card{

    padding:1.75rem;

    border-radius:var(--radius-lg);

    background:var(--gradient-card);

    border:1px solid var(--border-color);

    transition:var(--transition-normal);
}

.kpi-card:hover{

    transform:translateY(-6px);

    border-color:var(--color-primary);
}

.kpi-label{

    color:var(--text-muted);

    font-size:var(--fs-sm);

    margin-bottom:.75rem;
}

.kpi-value{

    font-size:2.3rem;

    font-weight:700;

    font-family:var(--font-heading);

    margin-bottom:.4rem;
}

.kpi-change{

    color:var(--color-success);

    font-weight:600;
}

/* ===========================
   SKILL CHIP
=========================== */

.chip{

    display:inline-flex;

    align-items:center;

    gap:.5rem;

    padding:.65rem 1rem;

    border-radius:var(--radius-pill);

    background:var(--bg-glass);

    border:1px solid var(--border-color);

    font-size:var(--fs-sm);

    transition:var(--transition-normal);

    backdrop-filter:blur(var(--blur-sm));
}

.chip:hover{

    background:rgba(59,130,246,.15);

    border-color:var(--color-primary);

    transform:translateY(-3px);
}

/* ===========================
   BADGE
=========================== */

.badge{

    display:inline-flex;

    align-items:center;

    justify-content:center;

    padding:.45rem .9rem;

    border-radius:999px;

    background:rgba(59,130,246,.15);

    color:var(--color-primary);

    font-size:.8rem;

    font-weight:600;
}

/* ===========================
   TAG
=========================== */

.tag{

    display:inline-flex;

    align-items:center;

    gap:.4rem;

    padding:.5rem .85rem;

    border-radius:999px;

    background:var(--bg-card);

    border:1px solid var(--border-color);

    color:var(--text-secondary);

    font-size:.82rem;
}

/* ===========================
   ICON BOX
=========================== */

.icon-box{

    width:56px;

    height:56px;

    display:grid;

    place-items:center;

    border-radius:18px;

    background:rgba(59,130,246,.08);

    color:var(--color-primary);

    font-size:1.4rem;

    transition:var(--transition-normal);
}

.icon-box:hover{

    transform:rotate(-6deg) scale(1.05);

    background:rgba(59,130,246,.18);
}

/* ===========================
   IMAGE
=========================== */

.image-cover{

    width:100%;

    height:100%;

    object-fit:cover;
}

/* ===========================
   DIVIDER
=========================== */

.line{

    width:100%;

    height:1px;

    background:var(--border-color);
}

/* ===========================
   STATUS
=========================== */

.status-success{

    color:var(--color-success);
}

.status-warning{

    color:var(--color-warning);
}

.status-danger{

    color:var(--color-danger);
}

/* ===========================
   ACCESSIBILITY HELPERS
=========================== */

.sr-only{

    position:absolute;

    width:1px;

    height:1px;

    padding:0;

    margin:-1px;
    overflow:hidden;

    clip:rect(0,0,0,0);
    white-space:nowrap;

    border:0;
}

/* ===========================
   COMMAND PALETTE
=========================== */

.command-palette{

    position:fixed;

    inset:0;

    z-index:calc(var(--z-modal) + 10);

    display:grid;

    place-items:start center;

    padding-top:6rem;

    background:rgba(2,6,23,.62);

    backdrop-filter:blur(20px);
}

.command-palette[hidden] {

    display:none;

}

.command-panel{

    width:min(92vw, 640px);

    padding:1.25rem;

    border-radius:24px;
}

.command-input-row{

    display:flex;

    align-items:center;

    gap:.8rem;

    padding:.9rem 1rem;
    border-radius:16px;
    background:rgba(255,255,255,.05);
    border:1px solid var(--border-color);
}

.command-input-row input{

    flex:1;

    color:var(--text-primary);
}

.command-results{

    display:flex;

    flex-direction:column;

    gap:.65rem;
    margin-top:1rem;
}

.command-results button{

    width:100%;

    display:flex;

    justify-content:space-between;

    align-items:center;

    padding:.9rem 1rem;
    border-radius:14px;
    background:rgba(255,255,255,.04);
    color:var(--text-primary);
    border:1px solid transparent;
    text-align:left;
}

.command-results button:hover,
.command-results button:focus-visible{

    border-color:var(--color-primary);
    background:rgba(59,130,246,.12);
}

/* ===========================
   PROJECT FILTERS
=========================== */

.projects-toolbar{

    display:flex;

    flex-wrap:wrap;

    justify-content:space-between;

    align-items:center;

    gap:1rem;
    margin-top:2rem;
}

.project-search-wrapper{
    position:relative;
    min-width:min(100%, 280px);
    width:100%;
    max-width:420px;
}

.project-search-wrapper .fa-magnifying-glass{
    position:absolute;
    left:1rem;
    top:50%;
    transform:translateY(-50%);
    color:var(--text-secondary);
    pointer-events:none;
}

.project-search{

    width:100%;
    padding:.9rem 1rem .9rem 3.4rem;

    border-radius:999px;

    border:1px solid var(--border-color);

    background:var(--bg-glass);

    color:var(--text-primary);
}

.project-filters{

    display:flex;

    flex-wrap:wrap;

    gap:.75rem;
}

.filter-chip{

    padding:.65rem 1rem;

    border-radius:999px;

    border:1px solid var(--border-color);

    background:var(--bg-glass);

    color:var(--text-secondary);
    transition:var(--transition-normal);
}

.filter-chip.active,
.filter-chip:hover{

    background:rgba(59,130,246,.15);

    color:var(--text-primary);

    border-color:var(--color-primary);
}

.projects-empty{

    text-align:center;

    color:var(--text-muted);

    margin-top:1.5rem;
}

/* ===========================
   BACK TO TOP
=========================== */

.back-to-top{

    position:fixed;

    right:1.25rem;

    bottom:1.25rem;

    width:56px;

    height:56px;

    z-index:var(--z-header);

    display:grid;

    place-items:center;

    border-radius:50%;

    background:var(--gradient-primary);

    color:white;

    box-shadow:var(--shadow-md);

    opacity:0;

    visibility:hidden;

    transform:translateY(12px);

    transition:var(--transition-normal);
}

.back-to-top.visible{

    opacity:1;

    visibility:visible;

    transform:translateY(0);
}

.back-to-top:hover{

    transform:translateY(-4px);
}