/* JMV Accounting — Client Portal UI v2.0.0. Variables are scoped to the portal only. */
.jmv-portal{
  --jmv-primary:#0B3D91;--jmv-primary-2:#2459B7;--jmv-accent:#00B4A6;
  --jmv-ink:#1A2233;--jmv-muted:#5A6478;--jmv-line:#E2E8F0;
  --jmv-surface:#FFFFFF;--jmv-soft:#F5F7FB;--jmv-soft-2:#EDF3FC;
  --jmv-success:#16A34A;--jmv-warning:#D97706;--jmv-danger:#DC2626;
  --jmv-radius:14px;--jmv-radius-lg:22px;
  --jmv-shadow:0 18px 48px rgba(31,51,89,.10);
  --jmv-shadow-sm:0 8px 22px rgba(31,51,89,.08)
}

.jmv-portal{background:linear-gradient(180deg,#f7f9fc 0,#fff 42%);min-height:calc(100vh - 140px);padding:34px 0 54px}
.jmv-portal>.jmv-container{width:min(1180px,calc(100% - 32px));margin:0 auto;display:grid;grid-template-columns:270px minmax(0,1fr);gap:26px;align-items:start}

.jmv-portal__nav{background:rgba(255,255,255,.96);border:1px solid var(--jmv-line);border-radius:var(--jmv-radius-lg);box-shadow:var(--jmv-shadow-sm);padding:18px;position:sticky;top:92px;overflow:hidden}
.jmv-portal__nav:before{content:"Portal del cliente";display:block;font-size:.72rem;letter-spacing:.09em;text-transform:uppercase;color:#8a94a6;font-weight:800;padding:0 6px 14px}
.jmv-portal__user{display:grid;grid-template-columns:44px 1fr;gap:10px;align-items:center;padding:0 4px 18px;margin-bottom:12px;border-bottom:1px solid var(--jmv-line)}
.jmv-portal__avatar{width:44px;height:44px;border-radius:14px;background:linear-gradient(135deg,var(--jmv-primary),var(--jmv-accent));color:#fff;display:grid;place-items:center;font-weight:800;font-size:.95rem;box-shadow:0 8px 18px rgba(23,63,143,.18)}
.jmv-portal__identity{min-width:0}.jmv-portal__identity strong{display:block;color:var(--jmv-ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.94rem}.jmv-portal__identity small{display:block;color:var(--jmv-muted);font-size:.73rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.jmv-portal__menu{list-style:none;margin:0;padding:0;display:grid;gap:5px}.jmv-portal__menu li{margin:0;padding:0}.jmv-portal__menu a{display:flex;align-items:center;gap:11px;min-height:44px;padding:10px 12px;border-radius:12px;color:#445064;text-decoration:none;font-weight:650;font-size:.9rem;transition:.18s ease}.jmv-portal__menu a:hover{background:var(--jmv-soft);color:var(--jmv-primary);transform:translateX(2px)}.jmv-portal__menu li.is-active a{background:linear-gradient(135deg,var(--jmv-primary),var(--jmv-primary-2));color:#fff;box-shadow:0 8px 18px rgba(23,63,143,.18)}
.jmv-nav-icon{width:20px;height:20px;display:grid;place-items:center;flex:0 0 20px}.jmv-nav-icon svg{width:19px;height:19px;display:block;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

.jmv-portal__content{min-width:0;background:var(--jmv-surface);border:1px solid var(--jmv-line);border-radius:var(--jmv-radius-lg);box-shadow:var(--jmv-shadow-sm);padding:clamp(22px,3vw,36px)}
.jmv-portal-section>h2,.jmv-dashboard>h2{margin:0 0 6px;color:var(--jmv-ink);font-size:clamp(1.55rem,2vw,2rem);letter-spacing:-.025em}.jmv-section-intro{margin:0 0 24px;color:var(--jmv-muted);font-size:.96rem}

.jmv-btn{display:inline-flex!important;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 18px;border-radius:12px;border:1px solid transparent;font-weight:750;font-size:.92rem;text-decoration:none!important;cursor:pointer;transition:.18s ease}.jmv-btn--primary{background:linear-gradient(135deg,var(--jmv-primary),var(--jmv-primary-2));color:#fff!important;box-shadow:0 8px 18px rgba(23,63,143,.17)}.jmv-btn--primary:hover{transform:translateY(-1px);box-shadow:0 12px 24px rgba(23,63,143,.22)}.jmv-btn--outline{background:#fff;color:var(--jmv-primary)!important;border-color:#c9d4e7}.jmv-btn--outline:hover{background:#f6f9ff;border-color:#aabbd9}.jmv-btn--lg{min-height:50px;padding:12px 22px;font-size:1rem}.jmv-btn--full{width:100%}

.jmv-empty-state{border:1px dashed #cfd8e8;background:linear-gradient(180deg,#fbfcfe,#f6f8fc);border-radius:18px;padding:42px 24px;text-align:center}.jmv-empty-state__icon{width:64px;height:64px;margin:0 auto 16px;border-radius:20px;background:linear-gradient(135deg,#eef3ff,#e8f8f6);display:grid;place-items:center;color:var(--jmv-primary)}.jmv-empty-state__icon svg{width:30px;height:30px;stroke:currentColor;fill:none;stroke-width:1.7}.jmv-empty-state h3{margin:0 0 8px;color:var(--jmv-ink);font-size:1.2rem}.jmv-empty-state p{max-width:520px;margin:0 auto 20px;color:var(--jmv-muted)}

.jmv-welcome{text-align:left;padding:8px 2px}.jmv-welcome__eyebrow{font-size:.76rem;text-transform:uppercase;letter-spacing:.09em;font-weight:800;color:var(--jmv-accent);margin-bottom:9px}.jmv-welcome h1{font-size:clamp(2rem,4vw,3rem);line-height:1.08;letter-spacing:-.035em;margin:0 0 14px;color:var(--jmv-ink)}.jmv-welcome__lead{color:var(--jmv-muted);max-width:650px;font-size:1.03rem;line-height:1.65;margin:0 0 24px}.jmv-welcome__steps{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:30px 0}.jmv-welcome__step{border:1px solid var(--jmv-line);border-radius:16px;padding:16px;background:#fff}.jmv-welcome__step strong{display:block;color:var(--jmv-ink);font-size:.92rem;margin-bottom:3px}.jmv-welcome__step span{color:var(--jmv-muted);font-size:.82rem}.jmv-welcome__step-num{width:30px;height:30px;border-radius:10px;background:var(--jmv-soft-2);display:grid;place-items:center;color:var(--jmv-primary);font-weight:800;margin-bottom:10px}

.jmv-dashboard__grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:22px 0 30px}.jmv-stat{position:relative;background:#fff;border:1px solid var(--jmv-line);border-radius:16px;padding:18px;overflow:hidden}.jmv-stat:after{content:"";position:absolute;right:-18px;top:-18px;width:64px;height:64px;border-radius:50%;background:rgba(23,63,143,.05)}.jmv-stat span{display:block;color:var(--jmv-muted);font-size:.82rem;margin-bottom:9px}.jmv-stat strong{display:block;color:var(--jmv-ink);font-size:1.9rem;line-height:1}
.jmv-dashboard__current{margin:0 0 24px}.jmv-dashboard__current h3{font-size:1rem;margin:0 0 10px}.jmv-dashboard__current-card{display:grid;grid-template-columns:1fr auto auto;gap:18px;align-items:center;border:1px solid #dce5f4;background:linear-gradient(135deg,#f7faff,#f5fbfa);border-radius:18px;padding:18px}.jmv-dashboard__current-card strong{color:var(--jmv-ink);font-size:1rem}.jmv-dashboard__current-card span{color:var(--jmv-muted);font-size:.84rem}.jmv-dashboard__price{display:block!important;color:var(--jmv-primary)!important;font-size:1.45rem!important;font-weight:800!important;margin-top:5px}

.jmv-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.jmv-card{display:flex;gap:14px;align-items:flex-start;border:1px solid var(--jmv-line);background:#fff;border-radius:16px;padding:18px;text-decoration:none!important;color:inherit!important;box-shadow:0 4px 14px rgba(31,51,89,.04);transition:.18s}.jmv-card:hover{transform:translateY(-2px);box-shadow:var(--jmv-shadow-sm);border-color:#cfd9e8}.jmv-card__icon{width:46px;height:46px;flex:0 0 46px;border-radius:14px;background:linear-gradient(135deg,#eef3ff,#e8f8f6);display:grid;place-items:center;font-size:1.35rem}.jmv-card__body{display:grid;gap:4px;min-width:0}.jmv-card__body strong{color:var(--jmv-ink)}.jmv-card__body span{color:var(--jmv-muted);font-size:.86rem}

.jmv-badge{display:inline-flex!important;width:max-content;align-items:center;min-height:24px;padding:3px 9px;border-radius:999px;font-size:.72rem!important;font-weight:800;letter-spacing:.01em;background:#eef2f7;color:#5d687a!important}.jmv-badge--completed,.jmv-badge--payment_confirmed{background:#e8f7ef;color:var(--jmv-success)!important}.jmv-badge--pending_payment,.jmv-badge--processing{background:#fff5df;color:var(--jmv-warning)!important}.jmv-badge--cancelled,.jmv-badge--payment_failed{background:#ffebed;color:var(--jmv-danger)!important}

.jmv-alert{border-radius:14px;padding:13px 15px;margin:0 0 18px;border:1px solid}.jmv-alert--info{background:#eff6ff;border-color:#cbdcf8;color:#234d8f}.jmv-alert--danger{background:#fff0f1;border-color:#f1c8cc;color:#9f2f37}
.jmv-action-row{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:1.25rem}
.jmv-notifications{display:grid;gap:10px}.jmv-notification{border:1px solid var(--jmv-line);border-radius:13px;padding:13px 15px;background:#fff}.jmv-notification.is-unread{border-left:4px solid var(--jmv-primary);background:#f8faff}.jmv-notification strong{display:block;color:var(--jmv-ink)}.jmv-notification small{color:var(--jmv-muted)}

.jmv-form{display:grid;gap:16px;max-width:650px}.jmv-field label{display:block;font-weight:700;color:var(--jmv-ink);font-size:.87rem;margin-bottom:6px}.jmv-field input,.jmv-field select,.jmv-field textarea{width:100%;min-height:44px;padding:10px 12px;border:1px solid #d8e0eb;border-radius:11px;background:#fff;color:var(--jmv-ink);font:inherit;transition:.16s}.jmv-field textarea{min-height:110px}.jmv-field input:focus,.jmv-field select:focus,.jmv-field textarea:focus{outline:none;border-color:#7aa0db;box-shadow:0 0 0 4px rgba(36,89,183,.1)}.jmv-form__row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.jmv-field__help{display:block;color:var(--jmv-muted);font-size:.78rem;margin-top:5px}

.jmv-auth{max-width:520px;margin:16px auto}.jmv-auth__tabs{display:flex;gap:6px;background:#f1f4f8;padding:5px;border-radius:13px;margin-bottom:14px}.jmv-auth__tab{flex:1;border:0;background:transparent;border-radius:10px;padding:10px 12px;font-weight:750;color:var(--jmv-muted);cursor:pointer}.jmv-auth__tab.is-active{background:#fff;color:var(--jmv-primary);box-shadow:0 4px 12px rgba(31,51,89,.08)}.jmv-auth__card{background:#fff;border:1px solid var(--jmv-line);border-radius:20px;padding:24px;box-shadow:var(--jmv-shadow-sm)}.jmv-auth__card h2{margin-top:0;color:var(--jmv-ink)}.jmv-auth__subtitle,.jmv-auth__footer{color:var(--jmv-muted)}

@media(max-width:980px){.jmv-portal>.jmv-container{grid-template-columns:1fr}.jmv-portal__nav{position:relative;top:auto}.jmv-portal__nav:before{display:none}.jmv-portal__menu{display:flex;overflow-x:auto;padding-bottom:4px;scrollbar-width:thin}.jmv-portal__menu li{flex:0 0 auto}.jmv-portal__menu a{white-space:nowrap}.jmv-portal__user{grid-template-columns:44px 1fr auto}.jmv-dashboard__grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.jmv-portal{padding:18px 0 34px}.jmv-portal>.jmv-container{width:min(100% - 20px,1180px);gap:14px}.jmv-portal__nav,.jmv-portal__content{border-radius:16px}.jmv-portal__content{padding:18px}.jmv-portal__user{padding-bottom:12px}.jmv-nav-icon{display:none}.jmv-portal__menu a{min-height:40px;padding:9px 11px}.jmv-dashboard__grid{grid-template-columns:1fr 1fr}.jmv-dashboard__current-card{grid-template-columns:1fr}.jmv-cards{grid-template-columns:1fr}.jmv-welcome__steps{grid-template-columns:1fr}.jmv-form__row{grid-template-columns:1fr}}


/* v1.2.9 — acciones de solicitudes y carga de documentos faltantes */
.jmv-section-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin-bottom:24px}.jmv-section-heading h2{margin:0 0 6px;color:var(--jmv-ink);font-size:clamp(1.55rem,2vw,2rem);letter-spacing:-.025em}.jmv-section-heading .jmv-section-intro{margin-bottom:0}.jmv-documents-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin:28px 0 12px}.jmv-documents-heading h3{margin:0 0 4px;color:var(--jmv-ink)}.jmv-documents-heading p{margin:0;color:var(--jmv-muted);font-size:.88rem}.jmv-upload-card{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,auto);gap:18px;align-items:center;border:1px solid #d7e2f2;background:linear-gradient(135deg,#f8fbff,#f5fbfa);border-radius:16px;padding:16px 18px;margin:0 0 18px}.jmv-upload-card__text{display:grid;gap:4px}.jmv-upload-card__text strong{color:var(--jmv-ink);font-size:.96rem}.jmv-upload-card__text span{color:var(--jmv-muted);font-size:.82rem}.jmv-upload-card__actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}.jmv-upload-card input[type=file]{max-width:320px;padding:8px;border:1px solid #d8e0eb;border-radius:10px;background:#fff;color:var(--jmv-ink)}
@media(max-width:760px){.jmv-section-heading{flex-direction:column}.jmv-section-heading>.jmv-btn{width:100%}.jmv-upload-card{grid-template-columns:1fr}.jmv-upload-card__actions{justify-content:stretch}.jmv-upload-card input[type=file],.jmv-upload-card__actions .jmv-btn{width:100%;max-width:none}}

/* v1.2.10: carga compacta de documentos dentro del detalle de solicitud */
.jmv-docs-simple-state{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:4px}.jmv-docs-simple-state .jmv-empty{margin:0;color:var(--jmv-muted)}.jmv-docs-add-more{margin-top:14px}.jmv-compact-upload{margin-top:14px;padding:14px 16px;border:1px solid #d8e0eb;border-radius:12px;background:#fbfcfe;max-width:560px}.jmv-compact-upload[hidden]{display:none!important}.jmv-compact-upload label,.jmv-compact-upload small{display:block}.jmv-compact-upload input[type=file]{display:block;width:100%;margin:10px 0;padding:9px;border:1px solid #d8e0eb;border-radius:9px;background:#fff}.jmv-compact-upload small{color:var(--jmv-muted);font-size:.8rem;margin-bottom:12px}.jmv-compact-upload__actions{display:flex;gap:8px;flex-wrap:wrap}@media(max-width:600px){.jmv-docs-simple-state{align-items:flex-start;flex-direction:column}.jmv-compact-upload__actions .jmv-btn{width:100%}}

/* v2.0.0 — payment chooser, scoped entirely inside the portal. */
.jmv-payment-methods{display:grid;gap:12px;margin-top:18px}
.jmv-payment-method{align-items:center;background:#FFFFFF;border:1px solid #E2E8F0;border-radius:14px;display:flex;gap:16px;justify-content:space-between;padding:16px}
.jmv-payment-method>div{display:grid;gap:3px}.jmv-payment-method strong{color:#1A2233}.jmv-payment-method small{color:#5A6478}
.jmv-payment-method.is-disabled{background:#F8FAFC;opacity:.72}.jmv-payment-method .jmv-btn{flex:0 0 auto}
.jmv-pay-box{background:#F8FAFC;border:1px solid #E2E8F0;border-radius:16px;padding:22px}
.jmv-payment-summary{background:#FFFFFF;border:1px solid #E2E8F0;border-radius:16px;margin-bottom:18px;padding:22px}
.jmv-payment-summary__row{display:flex;gap:18px;justify-content:space-between;padding:8px 0}
.jmv-payment-summary__row--total{border-top:2px solid #E2E8F0;color:#0B3D91;font-size:1.16rem;font-weight:800;margin-top:8px;padding-top:14px}
@media(max-width:640px){.jmv-payment-method{align-items:stretch;flex-direction:column}.jmv-payment-method .jmv-btn{width:100%}}

/* v2.0.0 — complete operational views. */
.jmv-alert--success{background:#ECFDF3;border-color:#BBE7CA;color:#166534}
.jmv-empty{color:var(--jmv-muted);padding:22px 0}.jmv-section-heading__eyebrow{color:var(--jmv-accent);display:block;font-size:.74rem;font-weight:800;letter-spacing:.09em;margin-bottom:5px;text-transform:uppercase}
.jmv-table-wrap{max-width:100%;overflow-x:auto}.jmv-table{border-collapse:separate;border-spacing:0;width:100%}.jmv-table th,.jmv-table td{border-bottom:1px solid var(--jmv-line);padding:13px 12px;text-align:left;vertical-align:middle}.jmv-table th{color:#647084;font-size:.74rem;font-weight:800;letter-spacing:.045em;text-transform:uppercase}.jmv-table td{color:var(--jmv-ink);font-size:.88rem}.jmv-table tbody tr:hover{background:#FAFBFD}.jmv-table th:first-child,.jmv-table td:first-child{padding-left:4px}.jmv-table th:last-child,.jmv-table td:last-child{padding-right:4px;text-align:right}
.jmv-request-header{align-items:flex-start;border-bottom:1px solid var(--jmv-line);display:flex;gap:20px;justify-content:space-between;margin:14px 0 22px;padding-bottom:20px}.jmv-request-header h2{color:var(--jmv-ink);font-size:clamp(1.65rem,3vw,2.15rem);margin:0 0 4px}.jmv-request-header p{color:var(--jmv-muted);margin:0}.jmv-back{color:var(--jmv-primary);display:inline-flex;font-size:.87rem;font-weight:750;margin-bottom:12px;text-decoration:none}.jmv-request-summary{background:#F8FAFC;border:1px solid var(--jmv-line);border-radius:15px;color:var(--jmv-ink);display:grid;gap:7px;margin:18px 0 26px;padding:20px}.jmv-request-summary__total{border-top:2px solid var(--jmv-line);color:var(--jmv-primary);font-size:1.08rem;margin-top:7px;padding-top:12px}
.jmv-payment-success{text-align:center}.jmv-payment-success__icon{align-items:center;background:#E8F7EF;border-radius:50%;display:flex;font-size:2rem;height:74px;justify-content:center;margin:0 auto 18px;width:74px}.jmv-payment-success .jmv-payment-summary{margin:24px auto 0;max-width:580px;text-align:left}.jmv-payment-summary__includes{color:var(--jmv-muted);padding:0 0 7px}.jmv-wizard__secure{color:var(--jmv-muted);font-size:.8rem;margin:16px 0 0;text-align:center}
.jmv-notification__footer{align-items:center;display:flex;gap:12px;justify-content:space-between;margin-top:8px}.jmv-notification__action{color:var(--jmv-primary);font-size:.8rem;font-weight:750;text-decoration:none}.jmv-card__actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:9px}.jmv-form--inline{align-items:end;display:flex;flex-wrap:wrap;max-width:none}.jmv-field--checkbox label{align-items:flex-start;display:flex;font-weight:500;gap:9px}.jmv-field--checkbox input{margin-top:3px;min-height:auto;width:auto}.jmv-auth__icon{align-items:center;background:var(--jmv-soft-2);border-radius:50%;display:flex;font-size:1.8rem;height:64px;justify-content:center;margin:0 auto 16px;width:64px}
.jmv-badge--paid{background:#E8F7EF;color:var(--jmv-success)!important}.jmv-badge--pending,.jmv-badge--sent,.jmv-badge--partial{background:#FFF5DF;color:var(--jmv-warning)!important}.jmv-badge--failed,.jmv-badge--refunded{background:#FFEBED;color:var(--jmv-danger)!important}
@media(max-width:720px){.jmv-table{min-width:660px}.jmv-request-header{flex-direction:column}.jmv-form--inline{align-items:stretch;display:grid}.jmv-notification__footer{align-items:flex-start;flex-direction:column}}

/* 2.0.6: los botones que inician una solicitud usan POST para reiniciar el borrador sin cambiar su apariencia. */
.jmv-welcome__start-form,.jmv-empty-state__start-form{display:inline-block;margin:0}

/* v2.1.0 — Documentos para firmar */
.jmv-sign-count{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:7px 12px;border-radius:999px;background:#fff4dc;color:#9a5a00;font-weight:800;font-size:.8rem;border:1px solid #f1d296}
.jmv-sign-empty{display:grid;place-items:center;text-align:center;padding:46px 22px;border:1px dashed #cbd5e1;border-radius:18px;background:#fbfcfe}.jmv-sign-empty__icon{width:58px;height:58px;border-radius:50%;display:grid;place-items:center;background:#eaf7ef;color:var(--jmv-success);font-size:1.7rem;font-weight:900;margin-bottom:12px}.jmv-sign-empty h3{margin:0 0 6px;color:var(--jmv-ink)}.jmv-sign-empty p{margin:0;color:var(--jmv-muted);max-width:520px}
.jmv-sign-list{display:grid;gap:12px}.jmv-sign-card{display:grid;grid-template-columns:52px minmax(0,1fr) auto;gap:14px;align-items:center;padding:16px 18px;border:1px solid var(--jmv-line);border-radius:16px;background:#fff;box-shadow:var(--jmv-shadow-sm)}.jmv-sign-card__icon{width:48px;height:48px;border-radius:14px;display:grid;place-items:center;font-size:1.25rem;font-weight:900;background:#edf3fc;color:var(--jmv-primary)}.jmv-sign-card.is-signed .jmv-sign-card__icon{background:#eaf7ef;color:var(--jmv-success)}.jmv-sign-card.is-cancelled{opacity:.7}.jmv-sign-card.is-cancelled .jmv-sign-card__icon{background:#f3f4f6;color:#7a8495}.jmv-sign-card__meta{display:flex;gap:7px;flex-wrap:wrap;color:#7a8495;font-size:.72rem;font-weight:700}.jmv-sign-card h3{margin:3px 0 3px;color:var(--jmv-ink);font-size:1rem}.jmv-sign-card p{margin:0;color:var(--jmv-muted);font-size:.84rem}.jmv-sign-card small{display:block;margin-top:4px;color:#8791a2}.jmv-sign-card__action{display:flex;justify-content:flex-end}
.jmv-sign-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding-bottom:18px;margin-bottom:18px;border-bottom:1px solid var(--jmv-line)}.jmv-sign-detail-head h2{margin:0 0 5px;color:var(--jmv-ink);font-size:clamp(1.45rem,2.5vw,2rem)}.jmv-sign-detail-head p{margin:0;color:var(--jmv-muted)}.jmv-sign-status{display:inline-flex;align-items:center;min-height:34px;padding:7px 12px;border-radius:999px;font-weight:800;font-size:.76rem;background:#fff4dc;color:#9a5a00;border:1px solid #f1d296;white-space:nowrap}.jmv-sign-status.is-done{background:#eaf7ef;color:#15733d;border-color:#bfe4ce}.jmv-sign-status.is-cancelled{background:#f2f4f7;color:#697386;border-color:#d9dee7}
.jmv-sign-viewer-wrap{border:1px solid var(--jmv-line);border-radius:17px;overflow:hidden;background:#fff;margin:0 0 20px}.jmv-sign-viewer-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 16px;border-bottom:1px solid var(--jmv-line);background:#fbfcfe}.jmv-sign-viewer-head>div{display:grid;gap:2px}.jmv-sign-viewer-head strong{color:var(--jmv-ink)}.jmv-sign-viewer-head small{color:var(--jmv-muted)}.jmv-sign-viewer{display:block;width:100%;height:680px;border:0;background:#f2f4f7}
.jmv-sign-action-box{margin-top:20px;padding:22px;border:1px solid var(--jmv-line);border-radius:18px;background:#fff;box-shadow:var(--jmv-shadow-sm)}.jmv-sign-action-box>h3{margin:0 0 6px;color:var(--jmv-ink)}.jmv-sign-action-box>p{margin:0 0 18px;color:var(--jmv-muted)}.jmv-sign-action-box__heading{display:grid;grid-template-columns:38px 1fr;gap:12px;align-items:start}.jmv-sign-action-box__heading--second{margin-top:22px}.jmv-sign-action-box__heading h3{margin:0 0 4px;color:var(--jmv-ink)}.jmv-sign-action-box__heading p{margin:0;color:var(--jmv-muted)}.jmv-sign-step{width:34px;height:34px;display:grid;place-items:center;border-radius:11px;background:#edf3fc;color:var(--jmv-primary);font-weight:900}
.jmv-sign-compliance-note{margin:16px 0 2px;padding:13px 15px;border-radius:12px;background:#fff8e8;border:1px solid #efd69b;color:#725016;font-size:.84rem;line-height:1.5}.jmv-sign-upload-form{margin-top:16px;max-width:600px}
.jmv-sign-consent-info{padding:15px 16px;border-radius:13px;background:#f7faff;border:1px solid #d9e7fb;margin-bottom:16px}.jmv-sign-consent-info strong{color:var(--jmv-primary)}.jmv-sign-consent-info p{margin:5px 0 0;color:#556176;font-size:.84rem;line-height:1.55}.jmv-sign-checks{display:grid;gap:10px;padding:4px 0}.jmv-sign-checks label{display:flex;align-items:flex-start;gap:10px;color:var(--jmv-ink);font-size:.88rem;line-height:1.5}.jmv-sign-checks input{width:18px;height:18px;min-height:auto;margin:2px 0 0;flex:0 0 auto}.jmv-sign-pad-field{margin-top:4px}.jmv-sign-pad-label{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.jmv-sign-pad-label strong{color:var(--jmv-ink)}.jmv-link-button{border:0;background:transparent;color:var(--jmv-primary);font:inherit;font-size:.82rem;font-weight:800;cursor:pointer;padding:4px}.jmv-signature-pad{display:block;width:100%;height:190px;border:1px solid #cfd8e6;border-radius:13px;background:#fff;touch-action:none;cursor:crosshair;box-shadow:inset 0 1px 4px rgba(31,51,89,.05)}.jmv-sign-pad-field small{display:block;color:var(--jmv-muted);font-size:.78rem;margin-top:6px}.jmv-sign-audit-note{color:var(--jmv-muted);font-size:.76rem;line-height:1.45;margin:2px 0 0}.jmv-sign-completed{display:grid;grid-template-columns:58px 1fr;gap:16px;align-items:start;padding:20px;border:1px solid #bfe4ce;border-radius:17px;background:#f4fbf7}.jmv-sign-completed__icon{width:54px;height:54px;border-radius:50%;display:grid;place-items:center;background:#dff4e7;color:var(--jmv-success);font-size:1.5rem;font-weight:900}.jmv-sign-completed h3{margin:0 0 5px;color:#155c35}.jmv-sign-completed p{margin:0 0 7px;color:#335c46}.jmv-sign-completed small{display:block;color:#4d6f5b;overflow-wrap:anywhere}.jmv-sign-completed code{font-size:.72rem;overflow-wrap:anywhere;word-break:break-all}
@media(max-width:760px){.jmv-sign-card{grid-template-columns:44px 1fr}.jmv-sign-card__icon{width:42px;height:42px}.jmv-sign-card__action{grid-column:1/-1}.jmv-sign-card__action .jmv-btn{width:100%}.jmv-sign-detail-head{flex-direction:column}.jmv-sign-viewer-head{align-items:stretch;flex-direction:column}.jmv-sign-viewer-head .jmv-btn{width:100%}.jmv-sign-viewer{height:520px}.jmv-signature-pad{height:160px}.jmv-sign-completed{grid-template-columns:1fr}.jmv-sign-completed__icon{width:48px;height:48px}}

/* v2.1.4 — salida visible y segura del portal */
.jmv-portal__nav-footer{margin-top:18px;padding-top:15px;border-top:1px solid var(--jmv-line)}
.jmv-portal__logout-button{display:flex;align-items:center;gap:11px;width:100%;min-height:54px;padding:10px 12px;border:1px solid #f0c9cd;border-radius:13px;background:#fff7f8;color:#9f2530!important;text-decoration:none!important;transition:.18s ease}
.jmv-portal__logout-button:hover{background:#fff0f1;border-color:#e7aeb4;transform:translateY(-1px);box-shadow:0 8px 18px rgba(159,37,48,.08)}
.jmv-portal__logout-icon{display:grid;place-items:center;flex:0 0 34px;width:34px;height:34px;border-radius:10px;background:#ffe4e7;color:#b42331}
.jmv-portal__logout-icon svg{width:19px;height:19px;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.jmv-portal__logout-button>span:last-child{display:grid;gap:1px;text-align:left;min-width:0}
.jmv-portal__logout-button strong{font-size:.88rem;line-height:1.2;color:#94212b}
.jmv-portal__logout-button small{font-size:.7rem;color:#9a5960;font-weight:600}
@media(max-width:900px){.jmv-portal__logout-button{min-height:50px}}


/* v2.1.6 — navegación móvil realmente responsiva, consistente con escritorio */
@media (max-width: 640px) {
  .jmv-portal {
    padding: 14px 0 30px;
  }

  .jmv-portal > .jmv-container {
    width: calc(100% - 20px);
    max-width: 100%;
    margin: 0 auto;
    gap: 14px;
  }

  .jmv-portal__nav {
    width: 100%;
    max-width: 100%;
    padding: 14px;
    border-radius: 18px;
    overflow: visible;
  }

  .jmv-portal__user {
    grid-template-columns: 48px minmax(0,1fr);
    gap: 11px;
    padding: 2px 2px 14px;
    margin-bottom: 10px;
  }

  .jmv-portal__avatar {
    width: 48px;
    height: 48px;
    border-radius: 14px;
  }

  .jmv-portal__identity strong {
    font-size: 1rem;
  }

  .jmv-portal__identity small {
    font-size: .78rem;
  }

  .jmv-portal__menu {
    display: grid !important;
    grid-template-columns: 1fr;
    gap: 5px;
    width: 100%;
    overflow: visible !important;
    padding: 0 !important;
    margin: 0 !important;
    scrollbar-width: none;
    list-style: none !important;
  }

  .jmv-portal__menu::-webkit-scrollbar {
    display: none;
  }

  .jmv-portal__menu li {
    display: block;
    width: 100%;
    min-width: 0;
    margin: 0 !important;
    padding: 0 !important;
    list-style: none !important;
  }

  .jmv-portal__menu li::marker {
    content: "";
    font-size: 0;
  }

  .jmv-portal__menu a {
    display: flex;
    width: 100%;
    min-height: 46px;
    padding: 11px 12px;
    gap: 11px;
    white-space: normal !important;
    line-height: 1.25;
    border-radius: 12px;
    box-sizing: border-box;
  }

  .jmv-nav-icon {
    display: grid !important;
    flex: 0 0 20px;
  }

  .jmv-portal__menu a:hover {
    transform: none;
  }

  .jmv-portal__nav-footer {
    margin-top: 12px;
    padding-top: 12px;
  }

  .jmv-portal__logout-button {
    min-height: 56px;
    padding: 11px 12px;
    border-radius: 13px;
  }

  .jmv-portal__content {
    width: 100%;
    max-width: 100%;
    padding: 18px 16px;
    border-radius: 18px;
    overflow: hidden;
    box-sizing: border-box;
  }

  .jmv-welcome {
    padding: 4px 0;
  }

  .jmv-welcome h1 {
    font-size: clamp(1.75rem, 8vw, 2.25rem);
    line-height: 1.12;
    overflow-wrap: anywhere;
    word-break: normal;
  }

  .jmv-welcome__lead {
    font-size: .95rem;
    line-height: 1.55;
    margin-bottom: 18px;
  }

  .jmv-welcome__start-form,
  .jmv-welcome__start-form .jmv-btn {
    width: 100%;
  }

  .jmv-welcome__steps {
    grid-template-columns: 1fr;
    gap: 10px;
    margin: 20px 0 8px;
  }

  .jmv-welcome__step {
    padding: 14px;
  }

  .jmv-section-heading,
  .jmv-request-header,
  .jmv-sign-detail-head,
  .jmv-sign-viewer-head {
    min-width: 0;
  }

  .jmv-table-wrap,
  .jmv-table-scroll {
    max-width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
}


/* v2.1.7 — navegación móvil por pantallas, estilo aplicación */
.jmv-mobile-portal-back{display:none}
.jmv-dashboard-payment-success{display:flex;gap:.55rem;align-items:center;flex-wrap:wrap;margin-bottom:18px}

@media (max-width:640px){
  /* El menú y el contenido son pantallas separadas en móvil. */
  .jmv-portal__nav:not(.jmv-portal__nav--menu){display:none!important}
  .jmv-portal__nav--menu{display:block!important}
  .jmv-portal__nav--menu:before{
    display:block!important;
    content:"Portal del cliente";
    padding:2px 4px 14px;
    color:#7d8899;
    font-size:.75rem;
    font-weight:800;
    letter-spacing:.1em;
    text-transform:uppercase;
  }
  .jmv-portal__nav--menu + .jmv-portal__content{display:none!important}

  .jmv-mobile-portal-back{
    display:inline-flex;
    align-items:center;
    gap:8px;
    min-height:42px;
    margin:0 0 18px;
    padding:8px 12px;
    border:1px solid #d9e1ec;
    border-radius:11px;
    background:#f8fafc;
    color:var(--jmv-primary)!important;
    text-decoration:none!important;
    font-size:.88rem;
    font-weight:750;
    line-height:1.2;
  }
  .jmv-mobile-portal-back>span:first-child{font-size:1.15rem;line-height:1}

  /* Una sección ocupa la pantalla útil; no queda el menú apilado encima. */
  .jmv-portal__content{
    margin:0;
    min-height:calc(100vh - 190px);
  }

  .jmv-portal__nav--menu .jmv-portal__menu a{
    min-height:50px;
    padding:12px 13px;
  }
}

/* v2.6.2 — Portal web alineado al flujo funcional de la app */
.jmv-client-home{display:grid;gap:24px}
.jmv-client-home__hero{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:26px 28px;border:1px solid #dce6f2;border-radius:22px;background:linear-gradient(135deg,#f7fbff 0%,#eef7ff 60%,#effcfa 100%);box-shadow:var(--jmv-shadow-sm)}
.jmv-client-home__hero-copy{min-width:0}.jmv-client-home__eyebrow,.jmv-client-home__section-head>div>span{display:block;margin-bottom:5px;color:#6f7d91;font-size:.73rem;font-weight:850;letter-spacing:.08em;text-transform:uppercase}
.jmv-client-home__hero h1{margin:0 0 7px;color:var(--jmv-ink);font-size:clamp(1.7rem,3vw,2.35rem);line-height:1.08}.jmv-client-home__hero p{max-width:650px;margin:0;color:var(--jmv-muted);line-height:1.55}
.jmv-client-home__new-request{flex:0 0 auto;margin:0}.jmv-client-home__new-request .jmv-btn{white-space:nowrap}
.jmv-client-home__section-head{display:flex;align-items:end;justify-content:space-between;gap:16px;margin:0 0 12px}.jmv-client-home__section-head h2{margin:0;color:var(--jmv-ink);font-size:1.2rem}.jmv-client-home__section-head>a{color:var(--jmv-primary);font-size:.84rem;font-weight:800;text-decoration:none}
.jmv-client-home__request-card{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:18px;padding:19px 20px;border:1px solid var(--jmv-line);border-radius:18px;background:#fff;box-shadow:var(--jmv-shadow-sm)}
.jmv-client-home__request-main{display:grid;gap:4px}.jmv-client-home__request-main strong{color:var(--jmv-ink);font-size:1.02rem}.jmv-client-home__request-main span{color:var(--jmv-muted);font-size:.8rem}.jmv-client-home__request-meta{display:flex;align-items:center;gap:12px}.jmv-client-home__request-meta>strong{color:var(--jmv-ink)}
.jmv-client-home__action-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.jmv-client-action{display:grid;grid-template-columns:50px minmax(0,1fr) 18px;align-items:center;gap:13px;min-height:88px;padding:15px 16px;border:1px solid var(--jmv-line);border-radius:18px;background:#fff;color:inherit!important;text-decoration:none!important;box-shadow:0 7px 18px rgba(31,51,89,.05);transition:.18s ease}.jmv-client-action:hover{transform:translateY(-2px);border-color:#cbd9ed;box-shadow:0 12px 26px rgba(31,51,89,.09)}
.jmv-client-action__icon{display:grid;place-items:center;width:50px;height:50px;border-radius:15px;background:#edf5ff;color:var(--jmv-primary);font-size:1.35rem;font-weight:900}.jmv-client-action--primary .jmv-client-action__icon{background:linear-gradient(135deg,#e8f1ff,#e9fbf8)}.jmv-client-action>span:nth-child(2){display:grid;gap:3px;min-width:0}.jmv-client-action strong{color:var(--jmv-ink);font-size:.94rem}.jmv-client-action small{color:var(--jmv-muted);font-size:.76rem}.jmv-client-action__arrow{color:#7e8a9d;font-size:1.45rem;line-height:1;text-align:right}
.jmv-client-home__overview{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px}.jmv-client-stat{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:15px 16px;border:1px solid var(--jmv-line);border-radius:15px;background:#fbfcfe;color:inherit!important;text-decoration:none!important}.jmv-client-stat span{color:var(--jmv-muted);font-size:.78rem;font-weight:700}.jmv-client-stat strong{color:var(--jmv-primary);font-size:1.35rem}.jmv-client-home__recent{padding-top:2px}

/* Documentos: carga directa, como en la app */
.jmv-web-upload-card{margin:4px 0 26px;padding:20px;border:1px solid #d8e4f2;border-radius:20px;background:linear-gradient(145deg,#fbfdff,#f5f9ff);box-shadow:0 8px 22px rgba(31,51,89,.06)}
.jmv-web-upload-card__head{display:grid;grid-template-columns:48px 1fr;gap:13px;align-items:center;margin-bottom:16px}.jmv-web-upload-card__icon{display:grid;place-items:center;width:48px;height:48px;border-radius:14px;background:#e7f2ff;color:var(--jmv-primary);font-size:1.45rem;font-weight:900}.jmv-web-upload-card h3{margin:0 0 4px;color:var(--jmv-ink)}.jmv-web-upload-card p{margin:0;color:var(--jmv-muted);font-size:.88rem}
.jmv-web-upload-form{display:grid;grid-template-columns:minmax(220px,.8fr) minmax(280px,1.2fr) auto;gap:13px;align-items:end}.jmv-web-upload-form label{display:grid;gap:6px;margin:0}.jmv-web-upload-form label>span{color:var(--jmv-ink);font-size:.82rem;font-weight:800}.jmv-web-upload-form select,.jmv-web-upload-form input[type=file]{width:100%;min-height:46px;box-sizing:border-box}.jmv-web-upload-form small{color:var(--jmv-muted);font-size:.72rem}
.jmv-documents-list-heading{margin-top:4px}.jmv-document-group{margin:0 0 16px;border:1px solid var(--jmv-line);border-radius:17px;background:#fff;overflow:hidden}.jmv-document-group__head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;background:#f8fafc;border-bottom:1px solid var(--jmv-line)}.jmv-document-group__head>div{display:grid;gap:2px}.jmv-document-group__head strong{color:var(--jmv-ink)}.jmv-document-group__head small{color:var(--jmv-muted);font-size:.74rem}.jmv-document-group__head>a{color:var(--jmv-primary);font-size:.78rem;font-weight:800;text-decoration:none}.jmv-document-list{display:grid}.jmv-document-row{display:grid;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:12px;padding:13px 15px;border-bottom:1px solid #eef2f6}.jmv-document-row:last-child{border-bottom:0}.jmv-document-row__icon{display:grid;place-items:center;width:42px;height:42px;border-radius:12px;background:#f0f5fb;color:var(--jmv-primary);font-weight:900}.jmv-document-row__name{display:grid;gap:3px;min-width:0}.jmv-document-row__name strong{color:var(--jmv-ink);font-size:.86rem;overflow-wrap:anywhere}.jmv-document-row__name small{color:var(--jmv-muted);font-size:.72rem}

/* Facturas: concepto + detalle + acción de pago */
.jmv-section-heading--actions{align-items:center}.jmv-client-invoice-list{display:grid;gap:15px}.jmv-client-invoice-card{padding:19px;border:1px solid var(--jmv-line);border-radius:19px;background:#fff;box-shadow:0 7px 18px rgba(31,51,89,.05)}.jmv-client-invoice-card__head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.jmv-client-invoice-card__head>div:first-child{min-width:0}.jmv-client-invoice-card__head small{color:var(--jmv-muted);font-size:.72rem}.jmv-client-invoice-card__head h3{margin:3px 0 6px;color:var(--jmv-ink);font-size:1.08rem}.jmv-client-invoice-card__head p{margin:0;max-width:700px;color:var(--jmv-muted);font-size:.84rem;line-height:1.5}.jmv-client-invoice-card__status{display:grid;justify-items:end;gap:8px;flex:0 0 auto}.jmv-client-invoice-card__status>strong{color:var(--jmv-ink);font-size:1.2rem}.jmv-client-invoice-items{display:grid;gap:7px;margin:15px 0;padding:12px 14px;border-radius:13px;background:#f8fafc}.jmv-client-invoice-item{display:flex;align-items:center;justify-content:space-between;gap:15px}.jmv-client-invoice-item>span{display:grid;gap:2px}.jmv-client-invoice-item strong{color:var(--jmv-ink);font-size:.82rem}.jmv-client-invoice-item small{color:var(--jmv-muted);font-size:.7rem}.jmv-client-invoice-card__foot{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-top:14px;border-top:1px solid var(--jmv-line)}.jmv-client-invoice-card__dates{display:flex;flex-wrap:wrap;gap:12px;color:var(--jmv-muted);font-size:.75rem}.jmv-client-invoice-note{display:block;max-width:380px;color:#74531c;font-size:.76rem;line-height:1.4;text-align:right}
.jmv-empty-state--compact{padding:14px 0 2px}.jmv-empty-state--compact p{margin:5px 0 12px}

@media(max-width:900px){
  .jmv-client-home__hero{align-items:flex-start;flex-direction:column}.jmv-client-home__new-request,.jmv-client-home__new-request .jmv-btn{width:100%}
  .jmv-client-home__overview{grid-template-columns:repeat(2,minmax(0,1fr))}
  .jmv-web-upload-form{grid-template-columns:1fr 1fr}.jmv-web-upload-form>.jmv-btn{grid-column:1/-1;width:100%}
}
@media(max-width:640px){
  .jmv-client-home{gap:18px}.jmv-client-home__hero{padding:20px 18px;border-radius:18px}.jmv-client-home__hero h1{font-size:1.7rem}.jmv-client-home__action-grid{grid-template-columns:1fr}.jmv-client-action{min-height:80px;padding:13px 14px}.jmv-client-home__request-card{grid-template-columns:1fr;gap:12px}.jmv-client-home__request-meta{justify-content:space-between}.jmv-client-home__request-action .jmv-btn{width:100%}.jmv-client-home__overview{grid-template-columns:repeat(2,minmax(0,1fr))}.jmv-client-stat{padding:13px}.jmv-client-stat span{font-size:.72rem}.jmv-client-stat strong{font-size:1.2rem}
  .jmv-web-upload-card{padding:16px;border-radius:17px}.jmv-web-upload-form{grid-template-columns:1fr}.jmv-web-upload-form>.jmv-btn{grid-column:auto}.jmv-document-row{grid-template-columns:38px minmax(0,1fr)}.jmv-document-row>.jmv-btn{grid-column:1/-1;width:100%}.jmv-document-group__head{align-items:flex-start;flex-direction:column}
  .jmv-section-heading--actions{align-items:stretch;flex-direction:column}.jmv-section-heading--actions>.jmv-btn{width:100%}.jmv-client-invoice-card__head,.jmv-client-invoice-card__foot{align-items:stretch;flex-direction:column}.jmv-client-invoice-card__status{grid-template-columns:auto auto;align-items:center;justify-content:space-between}.jmv-client-invoice-card__foot .jmv-btn{width:100%}.jmv-client-invoice-note{text-align:left;max-width:none}
}

/* 2.6.3 - Stripe payment methods */
.jmv-stripe-method-list{display:flex;flex-wrap:wrap;gap:7px;margin:8px 0 9px}.jmv-stripe-method-list span{display:inline-flex;align-items:center;padding:6px 10px;border:1px solid #d9e3ef;border-radius:999px;background:#f8fbff;color:#17324d;font-size:12px;font-weight:700}
