/* ==========================================================
   NEXA HUB — Portal de Clientes
   Índice:
     1. Base (login / dashboard)
     2. Login — Portal de Clientes
     3. Dashboard — Estructura
     4. Dashboard — Sidebar
     5. Dashboard — Contenido / Placeholder
     6. Dashboard — Proyectos (motor PROYECTOS, vista cliente)
     7. Responsive
   ========================================================== */

/* ==========================================================
   1. BASE
   ========================================================== */
body.portal-page,
body.dash-page{
    padding-top:0;
    min-height:100vh;
}

/* ==========================================================
   2. LOGIN — PORTAL DE CLIENTES
   ========================================================== */
.portal-page{
    position:relative;
    display:flex;
    align-items:center;
    justify-content:center;
    overflow-x:hidden;
    padding:60px 20px;
}

.portal-bg{
    position:fixed;
    inset:0;
    z-index:0;
    pointer-events:none;
    background:
        radial-gradient(circle at 15% 15%, rgba(45,140,255,.16), transparent 45%),
        radial-gradient(circle at 85% 85%, rgba(156,39,255,.16), transparent 45%),
        radial-gradient(circle at 85% 15%, rgba(255,45,149,.08), transparent 40%),
        var(--bg);
}

.portal-shell{
    position:relative;
    z-index:1;
    width:100%;
    max-width:460px;
    display:flex;
    flex-direction:column;
    align-items:center;
}

.portal-logo{
    display:inline-flex;
    margin-bottom:36px;
}

.portal-logo img{
    height:48px;
    width:auto;
    max-width:220px;
    object-fit:contain;
    object-position:center;
    display:block;
}

.portal-card{
    position:relative;
    width:100%;
    padding:48px 42px;
    border-radius:28px;
    background:rgba(255,255,255,.03);
    border:1px solid rgba(255,255,255,.08);
    backdrop-filter:blur(20px);
    text-align:center;
    overflow:hidden;
}

.portal-card::before{
    content:"";
    position:absolute;
    width:400px;
    height:400px;
    top:-220px;
    left:50%;
    transform:translateX(-50%);
    background:radial-gradient(circle, rgba(45,140,255,.16), transparent 70%);
    filter:blur(50px);
    pointer-events:none;
}

.portal-badge{
    position:relative;
    z-index:1;
    display:inline-flex;
    align-items:center;
    gap:10px;
    padding:9px 18px;
    border-radius:100px;
    border:1px solid rgba(140,82,255,.35);
    background:rgba(140,82,255,.08);
    color:#B98CFF;
    font-size:.75rem;
    font-weight:600;
    letter-spacing:2px;
    margin-bottom:22px;
}

.portal-title{
    position:relative;
    z-index:1;
    color:white;
    font-size:30px;
    font-weight:700;
    margin-bottom:14px;
}

.portal-subtitle{
    position:relative;
    z-index:1;
    color:var(--text-soft);
    font-size:14.5px;
    line-height:1.7;
    max-width:340px;
    margin:0 auto 34px;
}

.portal-form{
    position:relative;
    z-index:1;
    display:flex;
    flex-direction:column;
    gap:18px;
    text-align:left;
}

.portal-field{
    display:flex;
    flex-direction:column;
    gap:8px;
}

.portal-field label{
    color:#dedede;
    font-size:13px;
    font-weight:500;
    letter-spacing:.3px;
}

.portal-field input{
    width:100%;
    padding:14px 16px;
    border-radius:14px;
    background:rgba(255,255,255,.03);
    border:1px solid rgba(255,255,255,.12);
    color:white;
    font-family:inherit;
    font-size:14.5px;
    transition:.3s;
}

.portal-field input::placeholder{
    color:#6f6f6f;
}

.portal-field input:focus{
    outline:none;
    border-color:var(--blue);
    background:rgba(45,140,255,.05);
    box-shadow:0 0 0 3px rgba(45,140,255,.12);
}

.portal-error{
    display:none;
    color:#FF6B81;
    font-size:13px;
    margin-top:-6px;
}

.portal-error.active{
    display:block;
}

.portal-submit{
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:10px;
    width:100%;
    padding:15px 20px;
    margin-top:6px;
    border:none;
    border-radius:14px;
    background:var(--gradient);
    color:white;
    font-family:inherit;
    font-size:15px;
    font-weight:600;
    cursor:pointer;
    transition:.35s;
}

.portal-submit:hover{
    transform:translateY(-3px);
    box-shadow:0 15px 40px rgba(45,140,255,.3);
}

.portal-submit:hover .btn-arrow{
    transform:translateX(4px);
}

.portal-help{
    position:relative;
    z-index:1;
    margin-top:30px;
    display:flex;
    flex-direction:column;
    gap:4px;
    font-size:13.5px;
    color:var(--text-soft);
}

.portal-help a{
    color:#5FA8FF;
    text-decoration:none;
    font-weight:500;
}

.portal-help a:hover{
    text-decoration:underline;
}

/* ==========================================================
   3. DASHBOARD — ESTRUCTURA
   ========================================================== */
.dash-shell{
    display:flex;
    min-height:100vh;
    background:var(--bg);
}

/* ==========================================================
   4. DASHBOARD — SIDEBAR
   ========================================================== */
.dash-sidebar{
    position:sticky;
    top:0;
    height:100vh;
    width:260px;
    flex-shrink:0;
    display:flex;
    flex-direction:column;
    padding:32px 24px;
    background:rgba(255,255,255,.02);
    border-right:1px solid rgba(255,255,255,.08);
}

.dash-logo{
    display:inline-flex;
    margin-bottom:44px;
}

.dash-logo img{
    height:38px;
    width:auto;
    max-width:170px;
    object-fit:contain;
    object-position:left center;
    display:block;
}

.dash-nav{
    display:flex;
    flex-direction:column;
    gap:6px;
    flex:1;
}

.dash-nav-item{
    display:flex;
    align-items:center;
    gap:14px;
    padding:13px 16px;
    border-radius:14px;
    color:var(--text-soft);
    text-decoration:none;
    font-size:14.5px;
    font-weight:500;
    transition:.3s;
}

.dash-nav-item svg{
    width:19px;
    height:19px;
    flex-shrink:0;
}

.dash-nav-item:hover{
    color:white;
    background:rgba(255,255,255,.04);
}

.dash-nav-item.active{
    color:white;
    background:linear-gradient(135deg, rgba(45,140,255,.16), rgba(140,82,255,.10));
    border:1px solid rgba(45,140,255,.3);
}

.dash-logout{
    display:flex;
    align-items:center;
    gap:14px;
    padding:13px 16px;
    border-radius:14px;
    color:var(--text-soft);
    text-decoration:none;
    font-size:14px;
    font-weight:500;
    border-top:1px solid rgba(255,255,255,.08);
    margin-top:12px;
    padding-top:20px;
    transition:.3s;
}

.dash-logout svg{
    width:18px;
    height:18px;
}

.dash-logout:hover{
    color:#FF6B81;
}

.dash-overlay{
    display:none;
}

/* ==========================================================
   5. DASHBOARD — CONTENIDO / PLACEHOLDER
   ========================================================== */
.dash-content{
    flex:1;
    min-width:0;
    display:flex;
    flex-direction:column;
}

.dash-topbar{
    display:none;
    align-items:center;
    gap:16px;
    padding:18px 20px;
    border-bottom:1px solid rgba(255,255,255,.08);
    background:rgba(5,5,5,.9);
    backdrop-filter:blur(14px);
    position:sticky;
    top:0;
    z-index:20;
}

.dash-menu-toggle{
    display:flex;
    align-items:center;
    justify-content:center;
    width:38px;
    height:38px;
    border-radius:10px;
    border:1px solid rgba(255,255,255,.12);
    background:rgba(255,255,255,.03);
    color:white;
    cursor:pointer;
}

.dash-menu-toggle svg{
    width:20px;
    height:20px;
}

.dash-topbar-logo img{
    height:28px;
    width:auto;
    max-width:120px;
    object-fit:contain;
    object-position:left center;
    display:block;
}

.dash-main{
    flex:1;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:60px 6%;
}

.dash-placeholder{
    max-width:520px;
    text-align:center;
    padding:60px 44px;
    border-radius:28px;
    background:rgba(255,255,255,.03);
    border:1px solid rgba(255,255,255,.08);
    backdrop-filter:blur(18px);
}

.dash-placeholder-icon{
    width:64px;
    height:64px;
    margin:0 auto 24px;
    border-radius:50%;
    display:flex;
    align-items:center;
    justify-content:center;
    background:rgba(140,82,255,.12);
    border:1px solid rgba(140,82,255,.3);
    color:#B98CFF;
}

.dash-placeholder-icon svg{
    width:28px;
    height:28px;
}

.dash-placeholder h1{
    color:white;
    font-size:26px;
    font-weight:700;
    margin-bottom:16px;
}

.dash-placeholder p{
    color:var(--text-soft);
    font-size:15px;
    line-height:1.8;
}

/* ==========================================================
   6. DASHBOARD — PROYECTOS (motor PROYECTOS, vista cliente)
   ========================================================== */
.dash-main-inner{
    flex:1;
    padding:36px 5% 70px;
    display:flex;
    flex-direction:column;
    gap:30px;
    width:100%;
}

.dash-page-title h1{
    color:white;
    font-size:25px;
    font-weight:700;
    margin-bottom:8px;
}

.dash-page-title p{
    color:var(--text-soft);
    font-size:14px;
}

.dash-summary-grid{
    display:grid;
    grid-template-columns:repeat(3, 1fr);
    gap:18px;
}

.dash-summary-card{
    padding:22px;
    border-radius:18px;
    background:rgba(255,255,255,.03);
    border:1px solid rgba(255,255,255,.08);
    backdrop-filter:blur(16px);
}

.dash-summary-card span:first-child{
    display:block;
    color:#8a8a8a;
    font-size:12.5px;
    margin-bottom:8px;
}

.dash-summary-value{
    color:white;
    font-size:24px;
    font-weight:700;
}

.dash-projects-grid{
    display:grid;
    grid-template-columns:repeat(auto-fill, minmax(280px, 1fr));
    gap:18px;
}

.dash-project-card{
    position:relative;
    padding:22px;
    border-radius:18px;
    background:rgba(255,255,255,.03);
    border:1px solid rgba(255,255,255,.08);
    backdrop-filter:blur(16px);
    display:flex;
    flex-direction:column;
    gap:14px;
    text-decoration:none;
    transition:transform .3s, border-color .3s, box-shadow .3s;
    overflow:hidden;
}

.dash-project-card::before{
    content:"";
    position:absolute;
    top:0; left:0;
    width:4px;
    height:100%;
    background:var(--project-color, var(--gradient));
}

.dash-project-card:hover{
    transform:translateY(-4px);
    border-color:rgba(45,140,255,.3);
    box-shadow:0 20px 45px rgba(0,0,0,.35);
}

.dash-project-name{
    color:white;
    font-size:16px;
    font-weight:700;
}

.dash-project-type{
    display:inline-flex;
    width:fit-content;
    padding:5px 11px;
    border-radius:100px;
    font-size:11px;
    font-weight:600;
    background:color-mix(in srgb, var(--project-color, #2D8CFF) 16%, transparent);
    border:1px solid color-mix(in srgb, var(--project-color, #2D8CFF) 40%, transparent);
    color:var(--project-color, #5FA8FF);
}

.dash-progress-track{
    width:100%;
    height:7px;
    border-radius:100px;
    background:rgba(255,255,255,.06);
    overflow:hidden;
}

.dash-progress-fill{
    height:100%;
    border-radius:100px;
    background:var(--project-color, var(--gradient));
}

.dash-project-meta{
    display:flex;
    align-items:center;
    justify-content:space-between;
    font-size:12px;
    color:#8a8a8a;
}

.dash-empty-inline{
    color:#7a7a7a;
    font-size:13.5px;
    padding:30px 0;
    text-align:center;
}

/* ---- Detalle de proyecto (cliente) ---- */
.dash-back-link{
    display:inline-flex;
    align-items:center;
    gap:8px;
    color:var(--text-soft);
    text-decoration:none;
    font-size:13.5px;
    font-weight:500;
    margin-bottom:4px;
}

.dash-back-link svg{ width:16px; height:16px; }
.dash-back-link:hover{ color:white; }

.dash-progress-overview{
    display:grid;
    grid-template-columns:repeat(3, 1fr);
    gap:18px;
}

.dash-progress-card{
    padding:20px 22px;
    border-radius:18px;
    background:rgba(255,255,255,.03);
    border:1px solid rgba(255,255,255,.08);
    backdrop-filter:blur(16px);
    display:flex;
    flex-direction:column;
    gap:10px;
}

.dash-progress-card span:first-child{ color:#8a8a8a; font-size:12.5px; }
.dash-progress-card strong{ color:white; font-size:22px; font-weight:700; }

.dash-tabs{
    display:flex;
    align-items:center;
    gap:6px;
    padding:6px;
    border-radius:100px;
    background:rgba(255,255,255,.03);
    border:1px solid rgba(255,255,255,.08);
    width:fit-content;
    max-width:100%;
    overflow-x:auto;
}

.dash-tab-btn{
    display:inline-flex;
    align-items:center;
    gap:8px;
    padding:10px 18px;
    border-radius:100px;
    border:none;
    background:none;
    color:var(--text-soft);
    font-family:inherit;
    font-size:13.5px;
    font-weight:600;
    cursor:pointer;
    white-space:nowrap;
}

.dash-tab-btn.active{ color:white; background:var(--gradient); }

.dash-tab-panel{ display:none; flex-direction:column; gap:18px; }
.dash-tab-panel.active{ display:flex; }

.dash-panel-card{
    padding:22px;
    border-radius:18px;
    background:rgba(255,255,255,.03);
    border:1px solid rgba(255,255,255,.08);
    backdrop-filter:blur(16px);
}

.dash-phase{
    border-radius:18px;
    background:rgba(255,255,255,.03);
    border:1px solid rgba(255,255,255,.08);
    overflow:hidden;
}

.dash-phase-header{
    display:flex;
    align-items:center;
    gap:14px;
    padding:16px 20px;
    cursor:pointer;
}

.dash-phase-header-main{ flex:1; min-width:0; display:flex; flex-direction:column; gap:8px; }

.dash-phase-title-row{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.dash-phase-title-row strong{ color:white; font-size:14.5px; font-weight:700; }

.dash-phase-caret{ width:18px; height:18px; color:#8a8a8a; transition:transform .25s; flex-shrink:0; }
.dash-phase.is-open .dash-phase-caret{ transform:rotate(180deg); }

.dash-phase-body{
    display:none;
    flex-direction:column;
    gap:14px;
    padding:0 20px 20px;
    border-top:1px solid rgba(255,255,255,.06);
}

.dash-phase.is-open .dash-phase-body{ display:flex; padding-top:16px; }

.dash-section-block{
    border-radius:14px;
    background:rgba(255,255,255,.02);
    border:1px solid rgba(255,255,255,.06);
    padding:14px;
    display:flex;
    flex-direction:column;
    gap:10px;
}

.dash-section-block h4{ color:#dedede; font-size:13.5px; font-weight:600; }

.dash-task-row{
    display:flex;
    align-items:center;
    gap:12px;
    padding:12px 14px;
    border-radius:12px;
    background:rgba(255,255,255,.02);
    border:1px solid rgba(255,255,255,.06);
    flex-wrap:wrap;
}

.dash-task-row-main{ flex:1; min-width:160px; display:flex; flex-direction:column; gap:4px; }
.dash-task-row-main strong{ color:white; font-size:13.5px; font-weight:600; }
.dash-task-row-main span{ color:#8a8a8a; font-size:11.5px; }

.dash-task-tag{
    display:inline-flex;
    align-items:center;
    padding:4px 10px;
    border-radius:100px;
    font-size:10px;
    font-weight:700;
    letter-spacing:.3px;
    text-transform:uppercase;
    white-space:nowrap;
}

.dash-task-tag--client{ background:rgba(45,140,255,.14); border:1px solid rgba(45,140,255,.32); color:#5FA8FF; }
.dash-task-tag--nexa{ background:rgba(140,82,255,.14); border:1px solid rgba(140,82,255,.32); color:#B98CFF; }
.dash-task-tag--approval{ background:rgba(255,177,45,.14); border:1px solid rgba(255,177,45,.32); color:#FFC15F; }

.dash-badge{
    display:inline-flex;
    align-items:center;
    gap:6px;
    padding:5px 12px;
    border-radius:100px;
    font-size:11.5px;
    font-weight:600;
}

.dash-badge::before{ content:""; width:6px; height:6px; border-radius:50%; background:currentColor; }
.dash-badge--pending{ background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.16); color:#c9c9c9; }
.dash-badge--progress{ background:rgba(45,140,255,.12); border:1px solid rgba(45,140,255,.3); color:#5FA8FF; }
.dash-badge--waiting{ background:rgba(255,177,45,.12); border:1px solid rgba(255,177,45,.3); color:#FFC15F; }
.dash-badge--done{ background:rgba(60,210,140,.12); border:1px solid rgba(60,210,140,.32); color:#4ADE80; }
.dash-badge--blocked{ background:rgba(255,45,149,.12); border:1px solid rgba(255,45,149,.3); color:#FF6EC0; }

.dash-btn-small{
    display:inline-flex;
    align-items:center;
    gap:6px;
    padding:8px 15px;
    border-radius:100px;
    border:none;
    background:var(--gradient);
    color:white;
    font-family:inherit;
    font-size:12px;
    font-weight:600;
    cursor:pointer;
    transition:.25s;
    white-space:nowrap;
}

.dash-btn-small:hover{ transform:translateY(-2px); }

.dash-btn-outline{
    display:inline-flex;
    align-items:center;
    gap:6px;
    padding:8px 15px;
    border-radius:100px;
    border:1px solid rgba(255,255,255,.16);
    background:rgba(255,255,255,.03);
    color:var(--text-soft);
    font-family:inherit;
    font-size:12px;
    font-weight:600;
    cursor:pointer;
    transition:.25s;
    white-space:nowrap;
}

.dash-btn-outline:hover{ color:white; border-color:rgba(255,255,255,.3); }

.dash-file-row{
    display:flex;
    align-items:center;
    gap:14px;
    padding:14px 16px;
    border-radius:14px;
    background:rgba(255,255,255,.02);
    border:1px solid rgba(255,255,255,.06);
}

.dash-file-icon{
    width:36px;
    height:36px;
    border-radius:10px;
    display:flex;
    align-items:center;
    justify-content:center;
    background:rgba(45,140,255,.12);
    border:1px solid rgba(45,140,255,.3);
    color:#5FA8FF;
    flex-shrink:0;
}

.dash-file-icon svg{ width:16px; height:16px; }
.dash-file-info{ flex:1; min-width:0; display:flex; flex-direction:column; gap:2px; }
.dash-file-info strong{ color:white; font-size:13px; font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dash-file-info span{ color:#8a8a8a; font-size:11px; }

.dash-comment{ display:flex; gap:12px; }

.dash-comment-avatar{
    width:34px; height:34px; border-radius:50%;
    display:flex; align-items:center; justify-content:center;
    background:var(--gradient); color:white; font-size:11.5px; font-weight:700; flex-shrink:0;
}

.dash-comment-body{
    flex:1; min-width:0; padding:12px 15px; border-radius:14px;
    background:rgba(255,255,255,.03); border:1px solid rgba(255,255,255,.06);
}

.dash-comment-header{ display:flex; align-items:center; gap:9px; margin-bottom:5px; flex-wrap:wrap; }
.dash-comment-header strong{ color:white; font-size:12.5px; }
.dash-comment-header span{ color:#7a7a7a; font-size:10.5px; }
.dash-comment-text{ color:#dedede; font-size:13px; line-height:1.6; }

.dash-comment-form{ display:flex; gap:12px; align-items:flex-start; }

.dash-comment-form textarea{
    flex:1; padding:12px 14px; border-radius:14px;
    background:rgba(255,255,255,.03); border:1px solid rgba(255,255,255,.12);
    color:white; font-family:inherit; font-size:13px; resize:vertical; min-height:44px;
}

.dash-comment-form textarea:focus{ outline:none; border-color:var(--blue); }

.dash-timeline-item{ display:flex; gap:14px; position:relative; padding-bottom:20px; }

.dash-timeline-item::before{
    content:""; position:absolute; left:14px; top:30px; bottom:0; width:1px; background:rgba(255,255,255,.1);
}

.dash-timeline-item:last-child::before{ display:none; }

.dash-timeline-dot{
    width:30px; height:30px; border-radius:50%;
    display:flex; align-items:center; justify-content:center;
    background:rgba(140,82,255,.12); border:1px solid rgba(140,82,255,.3); color:#B98CFF;
    flex-shrink:0; z-index:1;
}

.dash-timeline-dot svg{ width:13px; height:13px; }
.dash-timeline-content p{ color:#dedede; font-size:13px; line-height:1.6; }
.dash-timeline-content span{ display:block; color:#7a7a7a; font-size:11px; margin-top:2px; }

/* ==========================================================
   6.5 PROYECTO (CLIENTE) — VISTA "PLANTILLA OFICIAL", SOLO LECTURA
   ==========================================================
   Espejo del layout de admin/proyecto-detalle.html (clases "pd-"
   en css/admin.css), sin controles de creación/edición/borrado.
   El cliente solo puede marcar como "Lista" sus propias tareas.
   ========================================================== */

.dash-breadcrumb{ display:flex; align-items:center; gap:8px; font-size:12.5px; color:#7a7a7a; margin-bottom:4px; }
.dash-breadcrumb a{ color:#9a9a9a; text-decoration:none; }
.dash-breadcrumb a:hover{ color:white; }
.dash-breadcrumb span{ color:#4a4a4a; }
.dash-breadcrumb strong{ color:#d8d8d8; font-weight:500; }

.dash-title{
    font-size:22px;
    font-weight:700;
    letter-spacing:-.3px;
    display:flex;
    align-items:center;
    gap:8px;
    flex-wrap:wrap;
}
.dash-title-part{ color:var(--project-color, #2D8CFF); }
.dash-title-part--secondary{ color:var(--project-color-2, #FF8A3D); }
.dash-title-sep{ color:#5a5a5a; font-weight:400; }

.dash-meta-row{
    display:flex; align-items:center; gap:26px; flex-wrap:wrap;
    margin-top:14px; padding-top:14px; border-top:1px solid rgba(255,255,255,.06);
}
.dash-meta-item{ display:flex; flex-direction:column; gap:4px; }
.dash-meta-item span{ font-size:11px; color:#7a7a7a; text-transform:uppercase; letter-spacing:.5px; }
.dash-meta-item strong{ font-size:13px; color:white; font-weight:600; }

.dash-top-grid{ display:grid; grid-template-columns:1fr 280px; gap:20px; align-items:start; margin-top:20px; }
.dash-top-side{ display:flex; flex-direction:column; gap:16px; }

.dash-progress-card, .dash-stage-progress-card{
    padding:20px; border-radius:18px;
    background:rgba(255,255,255,.03); border:1px solid rgba(255,255,255,.08); backdrop-filter:blur(16px);
}
.dash-progress-card-label{ display:block; font-size:11px; color:#7a7a7a; letter-spacing:.6px; margin-bottom:10px; }
.dash-progress-big{ display:block; font-size:32px; font-weight:800; color:white; letter-spacing:-1px; margin-bottom:12px; }

.dash-stage-progress-list{ display:flex; flex-direction:column; gap:10px; }
.dash-stage-progress-item{
    display:flex; align-items:center; gap:10px;
    width:100%; padding:8px 10px; margin:0;
    border:1px solid transparent; border-radius:10px;
    background:transparent; cursor:pointer; font:inherit; text-align:left; color:inherit;
    transition:background .2s, border-color .2s;
}
.dash-stage-progress-item:hover{ background:rgba(255,255,255,.04); }
.dash-stage-progress-item.is-active{
    background:rgba(255,255,255,.06);
    border-color:rgba(255,255,255,.14);
}
.dash-stage-progress-code{
    width:24px; height:24px; border-radius:7px;
    display:flex; align-items:center; justify-content:center;
    font-size:10.5px; font-weight:800; color:white; flex-shrink:0;
    background:var(--stage-color, #2D8CFF);
}
.dash-stage-progress-name{ flex:1; font-size:12.5px; color:#d8d8d8; }
.dash-stage-progress-percent{ font-size:12.5px; font-weight:700; color:white; }

.dash-timeline-track{ display:flex; align-items:stretch; gap:12px; overflow-x:auto; padding-bottom:6px; }
.dash-timeline-chip{
    flex:1 1 0; min-width:150px; padding:14px 16px; border-radius:14px;
    background:rgba(255,255,255,.03); border:1px solid rgba(255,255,255,.08);
    border-top:3px solid var(--stage-color, #2D8CFF);
    display:flex; flex-direction:column; gap:8px;
    cursor:pointer;
    transition:transform .25s, border-color .25s, background .25s, box-shadow .25s;
}
.dash-timeline-chip:hover{ transform:translateY(-3px); background:rgba(255,255,255,.05); }
.dash-timeline-chip.is-active{
    background:rgba(255,255,255,.07);
    border-color:color-mix(in srgb, var(--stage-color, #2D8CFF) 55%, rgba(255,255,255,.2));
    box-shadow:0 0 0 1px color-mix(in srgb, var(--stage-color, #2D8CFF) 35%, transparent);
}
.dash-timeline-chip-top{ display:flex; align-items:center; gap:8px; }
.dash-timeline-chip-num{
    width:22px; height:22px; border-radius:6px; display:flex; align-items:center; justify-content:center;
    font-size:10px; font-weight:800; color:white; background:var(--stage-color, #2D8CFF); flex-shrink:0;
}
.dash-timeline-chip-name{ font-size:13px; font-weight:600; color:white; }
.dash-timeline-chip-sub{ font-size:11px; color:#8a8a8a; }

#phaseList{
    transition:opacity .18s ease, transform .18s ease;
}
#phaseList.dash-stage-panel--leave{
    opacity:0;
    transform:translateY(8px);
    pointer-events:none;
}
#phaseList.dash-stage-panel--enter{
    opacity:0;
    transform:translateY(8px);
}
.dash-stage-panel-header{
    display:flex; align-items:flex-start; justify-content:space-between; gap:14px;
    margin-bottom:14px;
}
.dash-stage-panel-eyebrow{
    display:block; font-size:10.5px; letter-spacing:.7px; text-transform:uppercase; color:#7a7a7a; margin-bottom:6px;
}
.dash-stage-panel-title{
    margin:0; font-size:18px; font-weight:700; color:white; letter-spacing:-.2px;
    border-left:3px solid var(--stage-color, #2D8CFF); padding-left:10px;
}

.dash-block{ border-radius:18px; background:rgba(255,255,255,.03); border:1px solid rgba(255,255,255,.08); overflow:hidden; margin-bottom:16px; }
.dash-block-header{ display:flex; align-items:flex-start; justify-content:space-between; gap:14px; padding:18px 20px; border-bottom:1px solid rgba(255,255,255,.06); }
.dash-block-title{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.dash-block-title strong{ font-size:14px; color:white; text-transform:uppercase; letter-spacing:.3px; }
.dash-block-title-dot{ width:7px; height:7px; border-radius:50%; background:var(--stage-color,#2D8CFF); flex-shrink:0; }
.dash-block-desc{ font-size:12.5px; color:#9a9a9a; }
.dash-block-body{ padding:18px 20px; display:flex; flex-direction:column; gap:20px; }

.dash-section-group-header{ display:flex; align-items:center; gap:10px; margin-bottom:12px; }
.dash-section-group-dot{ width:8px; height:8px; border-radius:50%; background:var(--section-color,#2D8CFF); flex-shrink:0; }
.dash-section-group-name{ font-size:12px; font-weight:700; letter-spacing:.5px; color:#d8d8d8; text-transform:uppercase; }
.dash-section-group-handle{ font-size:11.5px; color:#6a6a6a; }

.dash-task-grid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(200px, 1fr)); gap:12px; }
.dash-task-card{
    display:flex; flex-direction:column; gap:8px; padding:14px; border-radius:12px;
    background:rgba(255,255,255,.025); border:1px solid rgba(255,255,255,.07);
    text-align:left; cursor:default;
    transition:transform .2s, border-color .2s, background .2s;
}
.dash-task-card.is-editable{ cursor:pointer; }
.dash-task-card.is-editable:hover{ transform:translateY(-2px); border-color:rgba(45,140,255,.4); }
.dash-task-card.is-client{
    border-color:rgba(45,140,255,.42);
    background:rgba(45,140,255,.08);
}
.dash-task-card.is-nexa{
    border-color:rgba(140,82,255,.45);
    background:rgba(20,14,36,.72);
}
.dash-task-card.is-client .dash-task-avatar{
    background:linear-gradient(135deg, #2D8CFF, #5FA8FF);
}
.dash-task-card.is-nexa .dash-task-avatar{
    background:linear-gradient(135deg, #8C52FF, #B99BFF);
}
.dash-task-type-badge{
    display:inline-flex; align-items:center; padding:2px 7px; border-radius:99px;
    font-size:9px; font-weight:800; letter-spacing:.45px; text-transform:uppercase;
    flex-shrink:0; margin-left:auto;
}
.dash-task-type-badge--client{
    background:rgba(45,140,255,.16); border:1px solid rgba(45,140,255,.4); color:#7EB6FF;
}
.dash-task-type-badge--nexa{
    background:rgba(140,82,255,.16); border:1px solid rgba(140,82,255,.4); color:#C4A8FF;
}
.dash-task-card-top{ display:flex; align-items:flex-start; gap:6px; }
.dash-task-card-code{ font-size:11px; color:#6a6a6a; font-weight:700; flex-shrink:0; margin-top:1px; }
.dash-task-card-title{ font-size:12.8px; font-weight:600; color:white; flex:1; line-height:1.4; }
.dash-task-card-desc{ font-size:11.5px; color:#8a8a8a; line-height:1.6; }
.dash-task-card-footer{ display:flex; align-items:center; justify-content:space-between; gap:8px; margin-top:2px; }
.dash-task-avatar-row{ display:flex; align-items:center; gap:6px; min-width:0; }
.dash-task-avatar{
    width:20px; height:20px; border-radius:50%; display:flex; align-items:center; justify-content:center;
    font-size:9px; font-weight:700; color:white; background:var(--gradient); flex-shrink:0;
}
.dash-task-avatar-name{ font-size:11px; color:#9a9a9a; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.dash-task-mark-btn{
    margin-top:2px; padding:7px 10px; border-radius:8px; border:1px solid rgba(45,140,255,.35);
    background:rgba(45,140,255,.1); color:#5FA8FF; font-family:inherit; font-size:11px; font-weight:600; cursor:pointer;
    transition:background .2s, color .2s;
}
.dash-task-mark-btn:hover{ background:rgba(45,140,255,.2); color:white; }
.dash-task-mark-btn:disabled{ opacity:.6; cursor:default; }

.dash-footer-grid{ display:grid; grid-template-columns:1fr 1fr 1fr; gap:18px; align-items:start; margin-top:24px; }
.dash-footer-panel{
    padding:20px; border-radius:18px; background:rgba(255,255,255,.03); border:1px solid rgba(255,255,255,.08);
    display:flex; flex-direction:column; gap:14px; max-height:520px; overflow-y:auto;
}
.dash-footer-panel h3{ font-size:13px; font-weight:700; color:white; letter-spacing:.3px; }

.dash-task-responsible-group{ display:flex; flex-direction:column; gap:8px; }
.dash-task-responsible-header{ font-size:10.5px; font-weight:800; letter-spacing:.5px; color:#8a8a8a; text-transform:uppercase; }
.dash-task-checkrow{ display:flex; align-items:center; gap:8px; padding:8px 0; border-bottom:1px solid rgba(255,255,255,.05); }
.dash-task-checkrow:last-child{ border-bottom:none; }
.dash-task-checkrow-title{ flex:1; font-size:12.5px; color:#d8d8d8; }
.dash-task-checkrow.is-done .dash-task-checkrow-title{ color:#7a7a7a; text-decoration:line-through; }

.dash-deliverable-row{ display:flex; align-items:center; gap:10px; padding:8px 0; border-bottom:1px solid rgba(255,255,255,.05); }
.dash-deliverable-row:last-child{ border-bottom:none; }
.dash-deliverable-check{ width:16px; height:16px; border-radius:5px; flex-shrink:0; display:flex; align-items:center; justify-content:center; }
.dash-deliverable-check svg{ width:11px; height:11px; }
.dash-deliverable-title{ flex:1; font-size:12.5px; color:#d8d8d8; }

.dash-activity-item{ display:flex; gap:10px; }
.dash-activity-avatar{
    width:26px; height:26px; border-radius:50%; flex-shrink:0; display:flex; align-items:center; justify-content:center;
    font-size:10px; font-weight:700; color:white; background:var(--gradient);
}
.dash-activity-text{ font-size:12px; color:#d8d8d8; line-height:1.5; }
.dash-activity-time{ font-size:10.5px; color:#6a6a6a; margin-top:2px; display:block; }

.dash-bottom-bar{
    display:flex; align-items:center; gap:22px; flex-wrap:wrap; margin-top:20px;
    padding:16px 20px; border-radius:14px; background:rgba(255,255,255,.02); border:1px solid rgba(255,255,255,.06);
    font-size:12px; color:#8a8a8a;
}
.dash-bottom-bar strong{ color:white; font-weight:600; }
.dash-status-dot-label{ display:flex; align-items:center; gap:7px; margin-left:auto; }
.dash-status-dot{ width:8px; height:8px; border-radius:50%; background:#4ADE80; box-shadow:0 0 8px rgba(74,222,128,.6); }

.dash-drawer-tabs-actions{ display:flex; align-items:center; gap:10px; margin-top:14px; }

/* ==========================================================
   6.6 MODAL GENÉRICO (CLIENTE) — "Mis Tareas" y futuros usos
   ==========================================================
   Espejo del sistema de modales del admin (.admin-modal-overlay
   en css/admin.css), con la misma mecánica de apertura/cierre,
   pero con nombres "dash-" para mantener el prefijo del Portal.
   ========================================================== */
.dash-modal-overlay{
    display:none;
    position:fixed;
    inset:0;
    z-index:100;
    align-items:center;
    justify-content:center;
    padding:24px;
    background:rgba(0,0,0,.65);
    backdrop-filter:blur(6px);
    opacity:0;
    transition:opacity .25s ease;
}

.dash-modal-overlay.active{
    display:flex;
    opacity:1;
}

.dash-modal{
    width:100%;
    max-width:560px;
    max-height:88vh;
    overflow-y:auto;
    padding:30px 30px 26px;
    border-radius:24px;
    background:#0b0b0e;
    border:1px solid rgba(255,255,255,.1);
    box-shadow:0 30px 80px rgba(0,0,0,.55);
    transform:translateY(14px);
    transition:transform .28s ease;
}

.dash-modal-overlay.active .dash-modal{ transform:translateY(0); }

.dash-modal-header{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:16px;
    margin-bottom:14px;
}

.dash-modal-header h3{ color:white; font-size:19px; font-weight:700; }

.dash-modal-close{
    display:flex;
    align-items:center;
    justify-content:center;
    width:32px;
    height:32px;
    border-radius:9px;
    border:1px solid rgba(255,255,255,.12);
    background:rgba(255,255,255,.03);
    color:var(--text-soft);
    cursor:pointer;
    flex-shrink:0;
    transition:.2s;
}

.dash-modal-close svg{ width:15px; height:15px; }
.dash-modal-close:hover{ color:white; border-color:rgba(255,107,129,.4); }

.dash-modal-section-title{
    font-size:11.5px;
    font-weight:700;
    letter-spacing:.5px;
    text-transform:uppercase;
    color:#8a8a8a;
    margin:22px 0 12px;
}

@media screen and (max-width:1024px){
    .dash-top-grid{ grid-template-columns:1fr; }
    .dash-footer-grid{ grid-template-columns:1fr 1fr; }
}
@media screen and (max-width:768px){
    .dash-footer-grid{ grid-template-columns:1fr; }
    .dash-task-grid{ grid-template-columns:1fr 1fr; }
}
@media screen and (max-width:576px){
    .dash-task-grid{ grid-template-columns:1fr; }
    .dash-title{ font-size:19px; }
    .dash-progress-big{ font-size:26px; }
    .dash-bottom-bar{ flex-direction:column; align-items:flex-start; gap:8px; }
    .dash-status-dot-label{ margin-left:0; }
    .dash-meta-row{ gap:16px; }
}

/* ==========================================================
   7. RESPONSIVE
   ========================================================== */
@media screen and (max-width:992px){

    .portal-card{
        padding:40px 30px;
    }

    .dash-summary-grid{
        grid-template-columns:1fr 1fr;
    }

}

@media screen and (max-width:900px){

    .dash-sidebar{
        position:fixed;
        top:0;
        left:0;
        z-index:40;
        transform:translateX(-100%);
        box-shadow:0 0 60px rgba(0,0,0,.5);
        transition:transform .35s ease;
    }

    .dash-sidebar.active{
        transform:translateX(0);
    }

    .dash-overlay{
        display:block;
        position:fixed;
        inset:0;
        z-index:30;
        background:rgba(0,0,0,.6);
        backdrop-filter:blur(2px);
        opacity:0;
        pointer-events:none;
        transition:opacity .35s ease;
    }

    .dash-overlay.active{
        opacity:1;
        pointer-events:auto;
    }

    .dash-topbar{
        display:flex;
    }

}

@media screen and (max-width:576px){

    .portal-card{
        padding:34px 22px;
        border-radius:22px;
    }

    .portal-title{
        font-size:25px;
    }

    .portal-logo img{
        height:40px;
        max-width:180px;
        object-fit:contain;
    }

    .dash-placeholder{
        padding:44px 26px;
    }

    .dash-placeholder h1{
        font-size:22px;
    }

    .dash-main-inner{
        padding:28px 5% 56px;
        gap:24px;
    }

    .dash-summary-grid{
        grid-template-columns:1fr;
    }

    .dash-projects-grid{
        grid-template-columns:1fr;
    }

    .dash-progress-overview{
        grid-template-columns:1fr;
    }

    .dash-task-row{
        flex-direction:column;
        align-items:flex-start;
    }

    .dash-comment-form{
        flex-direction:column;
    }

}

/* ==========================================================
   8. CALENDARIO (cliente)
   ========================================================== */
.cal-layout{
    display:grid;
    grid-template-columns:1fr 280px;
    gap:20px;
    align-items:start;
}
.cal-panel{
    padding:22px;
    border-radius:20px;
    background:rgba(255,255,255,.03);
    border:1px solid rgba(255,255,255,.08);
    backdrop-filter:blur(16px);
}
.cal-toolbar{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:14px;
    margin-bottom:18px;
    flex-wrap:wrap;
}
.cal-toolbar-nav{
    display:flex;
    align-items:center;
    gap:10px;
}
.cal-toolbar-nav h2{
    color:white;
    font-size:18px;
    font-weight:700;
    min-width:180px;
    text-align:center;
}
.cal-side{
    padding:20px;
    border-radius:20px;
    background:rgba(255,255,255,.03);
    border:1px solid rgba(255,255,255,.08);
}
.cal-side h3{
    color:white;
    font-size:14px;
    font-weight:700;
    margin-bottom:14px;
}
.cal-side-list{ display:flex; flex-direction:column; gap:8px; }
.cal-side-item{
    display:flex;
    flex-direction:column;
    gap:3px;
    text-align:left;
    padding:12px 14px;
    border-radius:12px;
    border:1px solid rgba(255,255,255,.07);
    background:rgba(255,255,255,.02);
    color:inherit;
    font-family:inherit;
    cursor:pointer;
    transition:border-color .2s, background .2s;
}
.cal-side-item:hover{
    border-color:rgba(45,140,255,.4);
    background:rgba(45,140,255,.06);
}
.cal-side-time{ font-size:11px; color:#5FA8FF; font-weight:600; }
.cal-side-title{ font-size:13px; color:white; font-weight:600; }
.cal-side-meta{ font-size:11px; color:#8a8a8a; }

.cal-weekdays{
    display:grid;
    grid-template-columns:repeat(7, 1fr);
    gap:6px;
    margin-bottom:6px;
}
.cal-weekday{
    text-align:center;
    font-size:11px;
    font-weight:700;
    letter-spacing:.4px;
    text-transform:uppercase;
    color:#7a7a7a;
    padding:6px 0;
}
.cal-days{
    display:grid;
    grid-template-columns:repeat(7, 1fr);
    gap:6px;
}
.cal-day{
    min-height:96px;
    padding:8px;
    border-radius:12px;
    background:rgba(255,255,255,.02);
    border:1px solid rgba(255,255,255,.06);
    display:flex;
    flex-direction:column;
    gap:4px;
    cursor:default;
    transition:border-color .2s, background .2s;
}
.cal-day:hover{ border-color:rgba(45,140,255,.35); background:rgba(45,140,255,.04); }
.cal-day.is-outside{ opacity:.38; }
.cal-day.is-today{
    border-color:rgba(45,140,255,.55);
    box-shadow:inset 0 0 0 1px rgba(45,140,255,.25);
}
.cal-day-number{
    align-self:flex-start;
    width:26px;
    height:26px;
    border-radius:8px;
    border:none;
    background:none;
    color:#d8d8d8;
    font-family:inherit;
    font-size:12px;
    font-weight:700;
    cursor:default;
}
.cal-day.is-today .cal-day-number{
    background:var(--gradient);
    color:white;
}
.cal-day-events{ display:flex; flex-direction:column; gap:3px; flex:1; min-height:0; }
.cal-event-chip{
    display:block;
    width:100%;
    text-align:left;
    padding:3px 6px;
    border-radius:6px;
    border:none;
    border-left:3px solid var(--event-color, #2D8CFF);
    background:color-mix(in srgb, var(--event-color, #2D8CFF) 16%, transparent);
    color:white;
    font-family:inherit;
    font-size:10.5px;
    font-weight:600;
    cursor:pointer;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
}
.cal-event-more{ font-size:10px; color:#8a8a8a; padding-left:4px; }

.dash-next-event{
    display:flex;
    flex-direction:column;
    gap:8px;
    padding:18px 20px;
    border-radius:16px;
    background:rgba(255,255,255,.03);
    border:1px solid rgba(255,255,255,.08);
    text-decoration:none;
    transition:border-color .2s, transform .2s;
}
.dash-next-event:hover{
    border-color:rgba(45,140,255,.4);
    transform:translateY(-2px);
}
.dash-next-event-label{ font-size:11px; color:#8a8a8a; text-transform:uppercase; letter-spacing:.5px; }
.dash-next-event-title{ font-size:15px; font-weight:700; color:white; }
.dash-next-event-meta{ font-size:12.5px; color:#9a9a9a; }

@media screen and (max-width:1100px){
    .cal-layout{ grid-template-columns:1fr; }
}
@media screen and (max-width:768px){
    .cal-day{ min-height:72px; padding:6px; }
    .cal-event-chip{ font-size:9.5px; }
    .cal-toolbar-nav h2{ min-width:140px; font-size:16px; }
}
@media screen and (max-width:576px){
    .cal-day{ min-height:58px; }
    .cal-event-chip{ display:none; }
    .cal-day.has-events .cal-day-number{
        box-shadow:0 0 0 2px rgba(45,140,255,.45);
    }
}


/* ==========================================================
   SETTINGS / CONFIGURACIÓN
   ========================================================== */
.settings-stack{
    display:flex;
    flex-direction:column;
    gap:18px;
    max-width:720px;
}
.settings-card{
    padding:24px 26px;
    border-radius:20px;
    background:rgba(255,255,255,.03);
    border:1px solid rgba(255,255,255,.08);
    animation:settings-fade .35s ease both;
}
.settings-card--danger{
    border-color:rgba(255,107,129,.22);
}
.settings-card-header{
    margin-bottom:18px;
}
.settings-card-header h2{
    color:white;
    font-size:16px;
    font-weight:700;
    margin-bottom:4px;
}
.settings-card-header p{
    color:#8a8a8a;
    font-size:13px;
}
.settings-avatar-row{
    display:flex;
    align-items:center;
    gap:18px;
    margin-bottom:8px;
    flex-wrap:wrap;
}
.settings-avatar{
    width:84px;
    height:84px;
    border-radius:50%;
    overflow:hidden;
    position:relative;
    flex-shrink:0;
    background:rgba(255,255,255,.04);
    border:1px solid rgba(255,255,255,.12);
}
.settings-avatar img{
    width:100%;
    height:100%;
    object-fit:cover;
}
.settings-avatar-fallback{
    width:100%;
    height:100%;
    display:flex;
    align-items:center;
    justify-content:center;
    background:var(--gradient);
    color:white;
    font-size:22px;
    font-weight:700;
}
.settings-avatar-actions{
    display:flex;
    flex-direction:column;
    gap:8px;
}
.settings-message{
    display:none;
    font-size:13px;
    margin-top:4px;
}
.settings-message.active{ display:block; }
.settings-message.is-success{ color:#4ADE80; }
.settings-message.is-error{ color:#FF6B81; }
.settings-logout-btn{
    color:#FF6B81 !important;
    border-color:rgba(255,107,129,.35) !important;
}
.settings-logout-btn:hover{
    background:rgba(255,107,129,.1) !important;
    color:#FF8A9A !important;
}
@keyframes settings-fade{
    from{ opacity:0; transform:translateY(8px); }
    to{ opacity:1; transform:translateY(0); }
}
@media screen and (max-width:576px){
    .settings-card{ padding:20px 18px; }
    .settings-avatar{ width:72px; height:72px; }
}


/* ---- Settings form (cliente) ---- */
.settings-form{
    display:flex;
    flex-direction:column;
    gap:14px;
}
.settings-field{
    display:flex;
    flex-direction:column;
    gap:7px;
}
.settings-field label{
    color:#dedede;
    font-size:13px;
    font-weight:500;
}
.settings-field input{
    width:100%;
    padding:12px 14px;
    border-radius:12px;
    background:rgba(255,255,255,.03);
    border:1px solid rgba(255,255,255,.12);
    color:white;
    font-family:inherit;
    font-size:14px;
    transition:.25s;
}
.settings-field input:focus{
    outline:none;
    border-color:var(--blue);
    background:rgba(45,140,255,.05);
    box-shadow:0 0 0 3px rgba(45,140,255,.12);
}
.settings-field input:disabled{
    opacity:.55;
    cursor:not-allowed;
}
.settings-hint{
    color:#8a8a8a;
    font-size:11.5px;
}
/* ==========================================================
   GOOGLE DRIVE — Documentos del proyecto (portal cliente)
   ========================================================== */
.pd-drive-root{ margin:18px 0; }
.pd-drive-card{
    padding:20px; border-radius:18px;
    background:rgba(255,255,255,.03);
    border:1px solid rgba(255,255,255,.08);
}
.pd-drive-card-header{ display:flex; justify-content:space-between; gap:12px; flex-wrap:wrap; margin-bottom:12px; }
.pd-drive-card-title{ display:flex; align-items:center; gap:12px; }
.pd-drive-card-title h3{ margin:0; font-size:15px; color:#fff; }
.pd-drive-card-subtitle{ margin:2px 0 0; font-size:12px; color:#8a8a8a; }
.pd-drive-gicon{ width:28px; height:28px; }
.pd-drive-status-badge{
    display:inline-flex; align-items:center; gap:7px;
    padding:5px 11px; border-radius:999px; font-size:12px; font-weight:600;
}
.pd-drive-status-dot{ width:7px; height:7px; border-radius:50%; background:currentColor; }
.pd-drive-status-badge.is-connected{ color:#7DDBA8; background:rgba(80,200,140,.14); border:1px solid rgba(80,200,140,.35); }
.pd-drive-status-badge.is-disconnected{ color:#9a9a9a; background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.1); }
.pd-drive-empty-state p{ margin:0 0 8px; color:#9a9a9a; font-size:13.5px; }
.pd-drive-hint{ margin:0; font-size:12px; color:#7a7a7a; }
.pd-drive-folder-name{ display:block; color:#fff; margin-bottom:4px; }
.pd-drive-folder-path{ margin:0; font-size:12.5px; color:#8a8a8a; }
.pd-drive-folder-chips{ display:flex; gap:10px; overflow-x:auto; margin:12px 0; }
.pd-drive-chip{
    display:flex; align-items:center; gap:10px; min-width:150px;
    padding:10px 12px; border-radius:14px; background:rgba(255,255,255,.03);
    border:1px solid rgba(255,255,255,.08); color:inherit; font:inherit; cursor:pointer;
}
.pd-drive-chip strong{ display:block; color:#fff; font-size:13px; }
.pd-drive-chip small{ color:#8a8a8a; font-size:11px; }
.pd-drive-card-actions{ display:flex; flex-wrap:wrap; gap:8px; }
.pd-drive-file-ico{ width:34px; height:34px; border-radius:10px; display:inline-flex; align-items:center; justify-content:center; }
.pd-drive-file-ico svg{ width:16px; height:16px; }
.pd-drive-file-ico--folder{ color:#B99CFF; background:rgba(140,82,255,.16); }
.pd-drive-empty{ color:#8a8a8a; text-align:center; }
.pd-drive-skeleton{ display:flex; gap:8px; }
.pd-drive-skel-chip{ min-width:150px; height:58px; border-radius:12px; background:rgba(255,255,255,.06); }

/* Aliases para componentes Drive compartidos (usan clases admin-*) */
.admin-modal-overlay{
    position:fixed; inset:0; z-index:100;
    display:none; align-items:center; justify-content:center;
    padding:20px; background:rgba(0,0,0,.65); backdrop-filter:blur(6px);
}
.admin-modal-overlay.active{ display:flex; }
.admin-modal{
    width:min(720px, 94vw); max-height:min(90vh, 900px); overflow:auto;
    border-radius:20px; background:#141416;
    border:1px solid rgba(255,255,255,.1);
    box-shadow:0 24px 60px rgba(0,0,0,.5);
}
.admin-modal-header{
    display:flex; align-items:flex-start; justify-content:space-between;
    gap:12px; padding:18px 22px 12px;
}
.admin-modal-header h3{ margin:0; color:#fff; font-size:17px; }
.admin-modal-close{
    width:36px; height:36px; border-radius:10px;
    border:1px solid rgba(255,255,255,.1); background:transparent; color:#9a9a9a; cursor:pointer;
    display:inline-flex; align-items:center; justify-content:center;
}
.admin-modal-close svg{ width:15px; height:15px; }
.admin-modal-actions{
    display:flex; flex-wrap:wrap; gap:8px; justify-content:flex-end;
    padding:12px 22px 20px;
}
.admin-btn-primary,
.admin-btn-secondary{
    display:inline-flex; align-items:center; justify-content:center; gap:8px;
    min-height:40px; padding:0 14px; border-radius:12px;
    font:inherit; font-size:13px; font-weight:600; cursor:pointer; text-decoration:none;
}
.admin-btn-primary{
    border:0; color:#fff;
    background:linear-gradient(135deg, #8C52FF, #2D8CFF);
}
.admin-btn-secondary{
    border:1px solid rgba(255,255,255,.12); background:rgba(255,255,255,.04); color:#e8e8e8;
}
.admin-icon-btn{
    width:38px; height:38px; border-radius:11px;
    border:1px solid rgba(255,255,255,.1); background:rgba(255,255,255,.03);
    color:#cfcfcf; display:inline-flex; align-items:center; justify-content:center; cursor:pointer;
}
.admin-icon-btn svg{ width:16px; height:16px; }
.admin-form-error{ display:none; color:#FF8A9A; font-size:12.5px; padding:0 22px 12px; }
.admin-form-error.active{ display:block; }

.pd-drive-modal{ max-width:720px; width:min(720px, 94vw); }
.pd-drive-browser-modal{ max-width:980px; width:min(980px, 96vw); }
.pd-drive-modal-title{ display:flex; gap:12px; align-items:flex-start; }
.pd-drive-modal-sub{ margin:4px 0 0; font-size:12.5px; color:#8a8a8a; }
.pd-drive-browser-toolbar,
.pd-drive-selector-toolbar{ display:flex; flex-wrap:wrap; gap:10px; align-items:center; padding:0 22px 12px; }
.pd-drive-search{
    flex:1; min-width:160px; height:40px; border-radius:12px;
    border:1px solid rgba(255,255,255,.1); background:rgba(255,255,255,.04);
    color:#fff; padding:0 12px; font:inherit; font-size:13px;
}
.pd-drive-filters{ display:flex; flex-wrap:wrap; gap:6px; }
.pd-drive-filter{
    border:1px solid rgba(255,255,255,.1); background:rgba(255,255,255,.03);
    color:#9a9a9a; border-radius:999px; padding:6px 11px; font:inherit; font-size:12px; cursor:pointer;
}
.pd-drive-filter.is-active{ color:#fff; border-color:rgba(140,82,255,.4); background:rgba(140,82,255,.14); }
.pd-drive-browser-table-wrap{ padding:0 22px 18px; }
.pd-drive-browser-head, .pd-drive-browser-row{
    display:grid; grid-template-columns:minmax(160px,2fr) .8fr .7fr .9fr .9fr auto;
    gap:10px; align-items:center;
}
.pd-drive-browser-head{ padding:0 8px 8px; font-size:11px; text-transform:uppercase; color:#6a6a6a; }
.pd-drive-browser-list{ max-height:min(52vh,480px); overflow:auto; display:flex; flex-direction:column; gap:8px; }
.pd-drive-browser-row{
    padding:10px 8px; border-radius:12px; border:1px solid rgba(255,255,255,.06);
    background:rgba(255,255,255,.025); font-size:12.5px; color:#b8b8b8;
}
.pd-drive-browser-name{
    display:flex; align-items:center; gap:10px; border:0; background:transparent;
    color:#fff; font:inherit; font-weight:600; text-align:left; cursor:pointer; min-width:0;
}
.pd-drive-browser-actions{ display:flex; flex-wrap:wrap; gap:6px; justify-content:flex-end; }
.pd-drive-mini-btn{
    display:inline-flex; padding:5px 8px; border-radius:8px;
    border:1px solid rgba(255,255,255,.1); background:rgba(255,255,255,.04);
    color:#cfcfcf; font:inherit; font-size:11.5px; text-decoration:none; cursor:pointer;
}
.pd-drive-preview-body{ padding:0 22px 8px; }
.pd-drive-preview-hero{
    min-height:160px; display:flex; align-items:center; justify-content:center;
    border-radius:14px; border:1px solid rgba(255,255,255,.07); background:rgba(255,255,255,.03); margin-bottom:14px;
}
.pd-drive-preview-meta{ display:grid; grid-template-columns:1fr 1fr; gap:10px; margin:0 0 10px; }
.pd-drive-preview-meta dt{ font-size:11px; color:#6a6a6a; text-transform:uppercase; }
.pd-drive-preview-meta dd{ margin:0; color:#fff; font-weight:600; }
.pd-drive-file-ico--image{ color:#6EB0FF; background:rgba(45,140,255,.14); }
.pd-drive-file-ico--video{ color:#FF8A9A; background:rgba(255,90,110,.14); }
.pd-drive-file-ico--pdf{ color:#FFB074; background:rgba(255,159,90,.14); }
.pd-drive-file-ico--doc{ color:#7DDBA8; background:rgba(80,200,140,.14); }
@media screen and (max-width:768px){
    .pd-drive-browser-head{ display:none; }
    .pd-drive-browser-row{ grid-template-columns:1fr; }
}

.dash-timeline-chip-stats{
    display:flex; flex-wrap:wrap; gap:6px 10px; margin-top:8px;
    font-size:10.5px; color:rgba(255,255,255,.42);
}
.dash-timeline-chip-stats span{ white-space:nowrap; }
