:root {
    --q-primary: #0d5bd7;
    --q-primary-dark: #073b8f;
    --q-sidebar: #152238;
    --q-bg: #f4f7fb;
    --q-border: #e4eaf2;
    --q-text: #1c2738;
}

* { box-sizing: border-box; }

body {
    color: var(--q-text);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
}

.login-body {
    min-height: 100vh;
    margin: 0;
    background: var(--q-bg);
}

.login-shell {
    min-height: 100vh;
    display: grid;
    grid-template-columns: minmax(360px, 46%) 1fr;
}

.login-brand-panel {
    padding: clamp(3rem, 7vw, 7rem);
    color: #fff;
    background:
        radial-gradient(circle at 20% 20%, rgba(255,255,255,.18), transparent 35%),
        linear-gradient(145deg, var(--q-primary-dark), var(--q-primary));
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.login-brand-panel h1 {
    font-size: clamp(2rem, 4vw, 3.8rem);
    max-width: 650px;
}

.login-brand-panel p {
    max-width: 600px;
    font-size: 1.1rem;
    color: rgba(255,255,255,.82);
}

.login-logo {
    width: 230px;
    max-width: 80%;
    background: white;
    border-radius: 14px;
    padding: 12px;
    box-shadow: 0 18px 45px rgba(0,0,0,.22);
}

.login-logo-mobile { width: 170px; }

.login-form-panel {
    display: grid;
    place-items: center;
    padding: 2rem;
}

.login-card {
    width: min(100%, 470px);
    background: #fff;
    border: 1px solid var(--q-border);
    border-radius: 24px;
    padding: clamp(1.5rem, 4vw, 3rem);
    box-shadow: 0 24px 70px rgba(34, 56, 92, .12);
}

.app-body { margin: 0; background: var(--q-bg); }

.app-wrapper { min-height: 100vh; display: flex; }

.sidebar {
    width: 280px;
    min-height: 100vh;
    position: fixed;
    inset: 0 auto 0 0;
    z-index: 1040;
    display: flex;
    flex-direction: column;
    background: var(--q-sidebar);
    color: #fff;
    transition: transform .25s ease;
}

.brand-link {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 22px;
    color: #fff;
    text-decoration: none;
    border-bottom: 1px solid rgba(255,255,255,.1);
}

.brand-link img {
    width: 92px;
    background: #fff;
    border-radius: 8px;
    padding: 5px;
}

.brand-link strong, .brand-link small { display: block; }
.brand-link small { color: rgba(255,255,255,.6); }

.sidebar-nav { padding: 18px 14px; display: grid; gap: 6px; }

.sidebar-nav a {
    display: flex;
    align-items: center;
    gap: 13px;
    color: rgba(255,255,255,.76);
    padding: 12px 14px;
    border-radius: 10px;
    text-decoration: none;
}

.sidebar-nav a:hover, .sidebar-nav a.active {
    color: #fff;
    background: rgba(255,255,255,.11);
}

.disabled-link { opacity: .55; pointer-events: none; }

.sidebar-footer {
    margin-top: auto;
    padding: 20px;
    border-top: 1px solid rgba(255,255,255,.1);
}

.main-area { margin-left: 280px; min-height: 100vh; width: calc(100% - 280px); display: flex; flex-direction: column; }

.topbar {
    min-height: 78px;
    padding: 14px 26px;
    display: flex;
    align-items: center;
    gap: 16px;
    background: #fff;
    border-bottom: 1px solid var(--q-border);
    position: sticky;
    top: 0;
    z-index: 1020;
}

.topbar-title { font-weight: 800; font-size: 1.1rem; }
.topbar-subtitle { color: #758196; font-size: .83rem; }

.content-area { padding: 28px; flex: 1; }

.dashboard-hero {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 26px;
    background: #fff;
    border: 1px solid var(--q-border);
    border-radius: 18px;
}

.hero-date {
    border: 1px solid var(--q-border);
    border-radius: 10px;
    padding: 10px 14px;
    color: #536077;
}

.stat-card, .panel-card {
    background: #fff;
    border: 1px solid var(--q-border);
    border-radius: 16px;
    box-shadow: 0 10px 28px rgba(34,56,92,.05);
}

.stat-card { padding: 22px; display: flex; align-items: center; gap: 17px; }

.stat-icon {
    width: 54px;
    height: 54px;
    border-radius: 14px;
    display: grid;
    place-items: center;
    font-size: 1.35rem;
    color: var(--q-primary);
    background: #eaf2ff;
}

.stat-value { font-size: 1.8rem; line-height: 1; font-weight: 800; }
.stat-label { color: #758196; margin-top: 7px; }

.panel-card { padding: 22px; }
.panel-card-header { display: flex; justify-content: space-between; align-items: start; gap: 15px; }

.empty-state { text-align: center; color: #7d889a; padding: 55px 20px; }
.empty-state > i { font-size: 2.5rem; display: block; margin-bottom: 14px; }

.quick-actions { display: grid; gap: 10px; margin-top: 18px; }

.quick-action {
    border: 1px solid var(--q-border);
    background: #fff;
    border-radius: 10px;
    padding: 13px;
    text-align: left;
    display: flex;
    gap: 10px;
    align-items: center;
}

.app-footer {
    padding: 18px 28px;
    color: #7d889a;
    background: #fff;
    border-top: 1px solid var(--q-border);
    font-size: .86rem;
}

@media (max-width: 991.98px) {
    .login-shell { grid-template-columns: 1fr; }
    .login-brand-panel { display: none; }

    .sidebar { transform: translateX(-100%); }
    .sidebar.open { transform: translateX(0); }

    .main-area { margin-left: 0; width: 100%; }
}

@media (max-width: 575.98px) {
    .login-form-panel { padding: 1rem; }
    .login-card { border-radius: 16px; padding: 1.35rem; }
    .content-area { padding: 16px; }
    .topbar { padding: 12px 16px; }
    .topbar-subtitle { display: none; }
    .dashboard-hero { align-items: flex-start; gap: 18px; flex-direction: column; }
}
/* QService v0.12 - Dashboard operativo */
.dashboard-topbar-hidden{display:none!important}.dashboard-command-header{display:flex;align-items:center;justify-content:space-between;gap:20px;background:#fff;border:1px solid var(--q-border);border-radius:14px;padding:16px 20px}.dashboard-user-box{min-width:180px}.dashboard-kpi{height:100%;display:flex;align-items:center;gap:11px;padding:13px 14px;background:#fff;border:1px solid var(--q-border);border-radius:12px;transition:.18s}.dashboard-kpi:hover{transform:translateY(-2px);box-shadow:0 8px 22px rgba(34,56,92,.08)}.dashboard-kpi>i{font-size:1.25rem;color:var(--q-primary)}.dashboard-kpi strong{display:block;font-size:1.25rem;line-height:1}.dashboard-kpi span{display:block;color:#758196;font-size:.76rem;margin-top:4px}.dashboard-tabs .nav-link{font-weight:700;color:#536077;padding:.8rem 1.15rem}.dashboard-tabs .nav-link.active{color:var(--q-primary)}.dashboard-table thead th{white-space:nowrap;font-size:.78rem;text-transform:uppercase;letter-spacing:.03em;color:#6d788b;background:#f8fafc}.dashboard-table td{font-size:.88rem}.dashboard-operations-card{min-height:480px}@media(max-width:767.98px){.dashboard-command-header{align-items:flex-start;flex-direction:column}.dashboard-user-box{text-align:left!important}.dashboard-kpis .col-6{min-width:50%}}
/* Portal técnico v0.13 */
.tech-hero{background:linear-gradient(120deg,#10233f,#1d4f91);color:#fff;border-radius:20px;padding:28px 30px;display:flex;justify-content:space-between;align-items:center;gap:20px;box-shadow:0 14px 30px rgba(16,35,63,.18)}.tech-hero h1{font-size:1.8rem;margin:.25rem 0}.tech-hero p{margin:0;color:rgba(255,255,255,.78)}.eyebrow{text-transform:uppercase;letter-spacing:.1em;font-size:.72rem;font-weight:700;opacity:.72}.tech-stat-card{background:#fff;border:1px solid #e6ebf2;border-top:4px solid;border-radius:16px;padding:17px;display:flex;align-items:center;gap:13px;min-height:94px;box-shadow:0 8px 20px rgba(17,38,70,.06);transition:.2s}.tech-stat-card:hover{transform:translateY(-3px);box-shadow:0 13px 28px rgba(17,38,70,.12)}.tech-stat-icon{width:42px;height:42px;border-radius:12px;background:#f2f6fb;display:grid;place-items:center;font-size:1.2rem}.tech-stat-card strong{display:block;font-size:1.55rem;line-height:1}.tech-stat-card span{display:block;color:#637083;font-size:.78rem;margin-top:7px}.priority-urgente{background:#ffe0e4;color:#a41125}.priority-alta{background:#fff0d2;color:#975d00}.priority-normal{background:#e3efff;color:#1556a3}.priority-baja{background:#e7f6eb;color:#24733b}.sticky-ot-summary{position:sticky;top:10px;z-index:20;background:#fff;border:1px solid #e3e9f1;border-radius:18px;padding:18px 22px;display:flex;justify-content:space-between;align-items:center;box-shadow:0 10px 25px rgba(14,35,66,.09)}.sticky-ot-summary h1{font-size:1.55rem;margin:.15rem 0}.sticky-ot-summary p{margin:0;color:#657285}.workflow-line{display:flex;background:#fff;border-radius:16px;padding:18px;box-shadow:0 8px 20px rgba(17,38,70,.06);overflow-x:auto}.workflow-step{min-width:110px;flex:1;text-align:center;position:relative}.workflow-step:not(:last-child):after{content:"";position:absolute;top:17px;left:60%;right:-40%;height:3px;background:#dde4ed}.workflow-step span{position:relative;z-index:1;margin:auto;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:#e8edf3;color:#7b8797;font-weight:700}.workflow-step small{display:block;margin-top:8px;color:#7b8797}.workflow-step.done span{background:#26a269;color:#fff}.workflow-step.done:not(:last-child):after{background:#26a269}.workflow-step.active span{background:#1565c0;color:#fff;box-shadow:0 0 0 6px rgba(21,101,192,.12)}.workflow-step.active small{color:#153b67;font-weight:700}.soft-box{background:#f6f8fb;border-radius:12px;padding:12px;margin-top:6px}.decision-card{border:2px solid #e4eaf1;border-radius:16px;padding:22px;height:100%;text-align:center}.decision-card i{font-size:2.5rem}.decision-card h3{font-size:1.15rem;margin-top:10px}.decision-card p{color:#687588;font-size:.88rem}.decision-yes{border-color:#bfe4cb;background:#f4fbf6}.decision-yes i{color:#198754}.decision-no{border-color:#f0c5ca;background:#fff7f8}.decision-no i{color:#dc3545}.timeline-mini{max-height:480px;overflow:auto}.timeline-item{display:flex;gap:12px;position:relative;padding-bottom:18px}.timeline-item>span{width:10px;height:10px;border-radius:50%;background:#2876c7;margin-top:6px;flex:none}.timeline-item:not(:last-child):before{content:"";position:absolute;left:4px;top:17px;bottom:0;width:2px;background:#e0e7ef}.timeline-item p{margin:2px 0;color:#5f6d7d;font-size:.85rem}.timeline-item small{color:#8a95a4;font-size:.72rem}@media(max-width:768px){.tech-hero{align-items:flex-start;flex-direction:column}.sticky-ot-summary{position:static}.workflow-step{min-width:90px}}
