:root {
    --petroleo-900: #0a2e33;
    --petroleo-800: #0f3d42;
    --petroleo-700: #155056;
    --petroleo-600: #1c6870;
    --petroleo-100: #e3eef0;
    --naranja-600: #d9520f;
    --naranja-500: #f2621a;
    --naranja-400: #ff8a4c;
    --naranja-100: #ffe8d9;
    --bg: #eef4f4;
    --text: #17262a;
}
* { box-sizing: border-box; }
body {
    font-family: -apple-system, "Segoe UI", Roboto, sans-serif;
    margin: 0;
    background: var(--bg);
    color: var(--text);
}
.navbar {
    background: var(--petroleo-900);
    padding: 14px 24px;
    display: flex;
    gap: 20px;
    align-items: center;
    border-bottom: 3px solid var(--naranja-500);
}
.navbar a {
    color: var(--petroleo-100);
    text-decoration: none;
    font-size: 15px;
}
.navbar a.brand {
    color: white;
    font-weight: 700;
    font-size: 18px;
    margin-right: auto;
    display: flex;
    align-items: center;
    gap: 8px;
}
.brand-logo { width: 28px; height: auto; }
.navbar a:hover { color: var(--naranja-400); }
.container {
    max-width: 1100px;
    margin: 24px auto;
    padding: 0 20px;
}
h1, h2, h3 { color: var(--petroleo-900); }
table {
    width: 100%;
    border-collapse: collapse;
    background: white;
    border-radius: 8px;
    overflow: hidden;
    box-shadow: 0 1px 3px rgba(10,46,51,0.12);
    margin-bottom: 24px;
}
th, td {
    text-align: left;
    padding: 10px 14px;
    border-bottom: 1px solid #e2e8e6;
    font-size: 14px;
}
th { background: var(--petroleo-100); color: var(--petroleo-900); font-weight: 600; }
tr:last-child td { border-bottom: none; }
.btn {
    display: inline-block;
    padding: 8px 14px;
    border-radius: 6px;
    background: var(--naranja-500);
    color: white;
    text-decoration: none;
    font-size: 13px;
    border: none;
    cursor: pointer;
    font-weight: 600;
}
.btn:hover { background: var(--naranja-600); }
.btn-secondary { background: var(--petroleo-700); }
.btn-secondary:hover { background: var(--petroleo-800); }
.btn-success { background: #1c7a4a; }
.btn-success:hover { background: #145c37; }
.btn-warning { background: var(--petroleo-600); }
.btn-warning:hover { background: var(--petroleo-700); }
.btn-danger { background: #b3261e; }
.btn-danger:hover { background: #8f1e18; }
.btn-whatsapp { background: #1c7a4a; }
.btn-whatsapp:hover { background: #145c37; }
.btn-sm { padding: 7px 10px; font-size: 12px; }
.btn-outline {
    background: transparent;
    border: 1px solid var(--petroleo-600);
    color: var(--petroleo-700);
}
.btn-outline:hover { background: var(--petroleo-100); }
form.inline { display: inline; }
.card {
    background: white;
    border-radius: 8px;
    padding: 18px 20px;
    margin-bottom: 18px;
    box-shadow: 0 1px 3px rgba(10,46,51,0.12);
    border-left: 4px solid var(--petroleo-700);
}
.grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 14px;
    margin-bottom: 20px;
}
.stat {
    background: white;
    border-radius: 8px;
    padding: 16px;
    box-shadow: 0 1px 3px rgba(10,46,51,0.12);
    border-top: 3px solid var(--naranja-500);
}
.stat .label { font-size: 12px; color: var(--petroleo-700); text-transform: uppercase; letter-spacing: 0.03em; }
.stat .value { font-size: 24px; font-weight: 700; margin-top: 4px; color: var(--petroleo-900); }
.badge {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 12px;
    font-size: 11px;
    font-weight: 600;
}
.badge-ok { background: #d9f0e2; color: #146c3e; }
.badge-warn { background: var(--naranja-100); color: var(--naranja-600); }
.badge-alert { background: #fde0da; color: #b3261e; }
input, select, textarea {
    width: 100%;
    padding: 8px 10px;
    border: 1px solid #cfd8d7;
    border-radius: 6px;
    font-size: 14px;
    margin-top: 4px;
}
input:focus, select:focus, textarea:focus {
    outline: none;
    border-color: var(--naranja-500);
    box-shadow: 0 0 0 2px var(--naranja-100);
}
label { font-size: 13px; font-weight: 600; color: var(--petroleo-800); display: block; margin-top: 12px; }
.form-actions { margin-top: 18px; }
.contrato-block { border-top: 1px solid #e2e8e6; padding-top: 14px; margin-top: 14px; }
.muted { color: #5b6b6d; font-size: 13px; }

.modal-overlay {
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(10, 46, 51, 0.55);
    z-index: 1000;
    align-items: center;
    justify-content: center;
}
.modal-box {
    background: white;
    border-radius: 10px;
    padding: 24px;
    width: 90%;
    max-width: 420px;
    box-shadow: 0 8px 24px rgba(0,0,0,0.25);
}

.estado-circulo {
    display: inline-block;
    width: 14px;
    height: 14px;
    border-radius: 50%;
    vertical-align: middle;
    border: 1px solid rgba(0,0,0,0.1);
}
.circulo-verde { background: #2f9e56; }
.circulo-rojo { background: #c23b32; }
.circulo-naranja { background: #e8934a; }

details.circulo-toggle summary {
    list-style: none;
    cursor: pointer;
}
details.circulo-toggle summary::-webkit-details-marker { display: none; }
details.circulo-toggle summary::marker { content: ""; }

.btn-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    border-radius: 6px;
    border: 1px solid #d5dcdb;
    background: white;
    color: var(--petroleo-700);
    cursor: pointer;
    text-decoration: none;
    padding: 0;
    vertical-align: middle;
}
.btn-icon:hover { background: var(--petroleo-100); border-color: var(--petroleo-600); }
.linea-calendario {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 30px;
    margin-bottom: 4px;
}
.linea-calendario:last-child { margin-bottom: 0; }
.btn-icon svg { width: 20px; height: 20px; }
.btn-icon-danger { color: #b3261e; }
.btn-icon-danger:hover { background: #fde0da; border-color: #e3a29c; }
.btn-icon-warning { color: var(--naranja-500); }
.btn-icon-warning:hover { background: #ffe8d9; border-color: #f7b787; }
.btn-icon-success { color: #146c3e; }
.btn-icon-success:hover { background: #d9f2e3; border-color: #7fc99e; }

table.tabla-centrada td { text-align: center; vertical-align: middle; }
table.tabla-centrada th { text-align: center; }

.reli-card {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    background: white;
    border: 1px solid #e2e8e6;
    border-radius: 8px;
    padding: 5px 14px;
    box-shadow: 0 1px 2px rgba(10,46,51,0.06);
}
.circulo-boton {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
}

.btn-icon-color {
    width: 30px;
    height: 30px;
    border-radius: 6px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: none;
    cursor: pointer;
    color: white;
    text-decoration: none;
    vertical-align: middle;
}
.btn-icon-color svg { width: 16px; height: 16px; }
.btn-icon-naranja { background: var(--naranja-500); }
.btn-icon-naranja:hover { background: var(--naranja-600); }
.btn-icon-rojo { background: #b3261e; }
.btn-icon-rojo:hover { background: #8f1e18; }

/* ===================== Responsive / celulares ===================== */

.nav-menu-boton {
    display: none;
    background: none;
    border: none;
    color: white;
    cursor: pointer;
    padding: 6px;
    margin-left: auto;
}
.nav-menu-boton svg { width: 26px; height: 26px; }

.nav-links {
    display: flex;
    align-items: center;
    gap: 20px;
    margin-left: auto;
}
.nav-usuario { color: #cbd5e1; font-size: 13px; }

/* Cada tabla del sistema queda envuelta en esto por JS, para poder
   deslizar el dedo horizontalmente en vez de romper la página entera. */
.tabla-scroll {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

@media (max-width: 768px) {
    .navbar { padding: 10px 14px; gap: 10px; }
    .navbar a.brand { font-size: 16px; }
    .brand-logo { width: 26px; }

    .nav-menu-boton { display: block; }
    .nav-links {
        display: none;
        position: absolute;
        top: 100%;
        left: 0;
        right: 0;
        flex-direction: column;
        align-items: stretch;
        gap: 0;
        background: var(--petroleo-900);
        border-bottom: 3px solid var(--naranja-500);
        z-index: 999;
        margin-left: 0;
    }
    .nav-links.abierto { display: flex; }
    .nav-links a, .nav-usuario {
        padding: 14px 20px;
        border-top: 1px solid rgba(255,255,255,0.12);
        font-size: 16px;
    }
    .navbar { position: relative; }

    .container { padding: 14px; }
    h1 { font-size: 22px; }
    h2 { font-size: 18px; }

    .card { padding: 14px; }

    /* Los campos de los formularios no se salen del ancho de la pantalla,
       aunque en el HTML tengan un ancho fijo en píxeles puesto a mano. */
    input, select, textarea { max-width: 100%; box-sizing: border-box; }

    /* Un montón de formularios/bloques del sistema tienen "display:flex"
       puesto directo en el HTML para acomodar varios campos en fila en
       pantallas grandes — acá se fuerza a que, si no entran, pasen a la
       fila de abajo en vez de desbordar la pantalla hacia los costados. */
    [style*="display:flex"] { flex-wrap: wrap !important; }
    [style*="display: flex"] { flex-wrap: wrap !important; }

    /* Los botones de ícono quedan un poco más grandes, más fáciles de
       tocar con el dedo. */
    .btn-icon, .btn-icon-color { width: 34px; height: 34px; }
    .linea-calendario { min-height: 34px; }

    table { font-size: 13px; }
    table th, table td { padding: 6px 8px; }
}

/* --- Solapas de contrato / servicios --- */
.contract-actionbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:8px 0 10px}.contract-action{min-height:38px;display:inline-flex;align-items:center}.contract-actionbar .reli-card{min-height:38px;display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border:1px solid var(--petroleo-600);border-radius:6px;background:transparent;box-shadow:none}.portal-access-inline{margin:8px 0 0;padding:8px 10px;background:var(--petroleo-100);border-radius:6px;font-size:13px}.portal-access-label{font-weight:700;color:var(--petroleo-800);margin-right:8px}.portal-access-inline>div{display:inline-block;margin:0!important;padding:0!important;background:transparent!important}.contract-tab-buttons{
    position:relative;
    display:flex;
    gap:4px;
    flex-wrap:wrap;
    align-items:flex-end;
    margin:14px 0 0;
    padding:0 4px;
    background:transparent;
    border-bottom:3px solid var(--naranja-500);
}.contract-tab-btn,.property-tab-btn{
    appearance:none;
    position:relative;
    z-index:1;
    border:1px solid transparent;
    border-bottom:none;
    background:#e8934a3d;
    padding:9px 16px;
    border-radius:9px 9px 0 0;
    cursor:pointer;
    color:var(--petroleo-800);
    font-weight:600;
    margin-bottom:0;
    transition:background .15s ease,border-color .15s ease;
}.contract-tab-btn.active,.property-tab-btn.active{
    background:#fff;
    color:var(--petroleo-900);
    border:1px solid var(--naranja-500);
    border-top:3px solid var(--naranja-500);
    border-bottom:3px solid #fff;
    border-radius:9px 9px 6px 6px;
    margin-bottom:-3px;
    padding-top:7px;
    box-shadow:0 -1px 3px rgba(0,0,0,.05);
    z-index:3;
}.contract-tab-panel,.property-tab-panel{display:none;padding-top:14px}.contract-tab-panel.active,.property-tab-panel.active{display:block}.sin-contrato-panel{margin-top:10px}.servicio-celda{min-width:175px;vertical-align:top}.servicio-mini-form{display:grid;grid-template-columns:1fr;gap:4px}.servicio-mini-form input{min-width:0;padding:5px 6px;font-size:12px}.servicio-comprobante{margin-top:5px}.tab-section-head{margin-bottom:8px}

.portal-contract-box{margin-top:22px;padding:16px;border:1px solid var(--petroleo-300);border-radius:8px;background:var(--petroleo-100)}
.portal-contract-box h3{margin-top:0}
.portal-contract-actions{display:flex;gap:18px;align-items:flex-end;flex-wrap:wrap}
.portal-create-grid{display:grid;grid-template-columns:minmax(150px,1fr) minmax(220px,1.3fr) minmax(220px,1.3fr) auto;gap:10px;align-items:end}
.portal-create-grid input{margin-bottom:0}
@media(max-width:800px){.portal-create-grid{grid-template-columns:1fr}}

.owner-global-actions{display:flex;gap:10px;flex-wrap:wrap;margin:8px 0 18px}
.owner-global-actions .btn,.owner-global-actions .btn-secondary{border-radius:6px !important}


/* Solapas tipo navegador (Edge/Chrome): tarjeta al pasar el mouse */
.contract-tab-btn:not(.active):hover,
.property-tab-btn:not(.active):hover{
    background:#e8934a5c;
    border-color:rgba(245,97,34,.25);
}
.contract-tab-btn:focus-visible,
.property-tab-btn:focus-visible{
    outline:2px solid rgba(245,97,34,.35);
    outline-offset:1px;
}


/* Edición de contrato: orden visual Inquilino -> Portal -> Contrato */
.contract-edit-card{
    display:flex;
    flex-direction:column;
}
.contract-edit-form{
    display:contents;
}
.contract-inquilino-section{
    order:1;
}
.portal-contract-box{
    order:2;
    width:75%;
    max-width:900px;
    box-sizing:border-box;
    align-self:center;
}
.contract-main-section{
    order:3;
}
@media(max-width:800px){
    .portal-contract-box{
        width:100%;
        max-width:none;
    }
}


/* Servicios del propietario: etiquetas exactamente enfrentadas con cada campo */
.servicios-propietario-tabla .servicio-detalle-th{
    width:150px;
    min-width:150px;
}
.servicios-propietario-tabla .servicio-etiquetas{
    width:150px;
    min-width:150px;
    vertical-align:middle;
    padding:0 12px 0 4px;
    text-align:right;
}
.servicio-etiquetas-grid{
    display:grid !important;
    grid-template-columns:1fr !important;
    grid-template-rows:36px 36px 36px !important;
    row-gap:9px !important;
    align-items:stretch !important;
    width:100%;
    margin:0 !important;
    padding:0 !important;
}
.servicio-etiquetas-grid span{
    display:flex !important;
    align-items:center !important;
    justify-content:flex-end !important;
    width:100%;
    height:36px;
    margin:0 !important;
    padding:0 !important;
    font-size:12.5px;
    font-weight:600;
    color:var(--petroleo-700);
    white-space:nowrap;
    text-align:right;
    line-height:1;
}
.servicio-propietario-form{
    position:relative;
    display:grid !important;
    grid-template-columns:1fr !important;
    grid-template-rows:36px 36px 36px !important;
    row-gap:9px !important;
    margin:0 !important;
    padding:0 !important;
}
.servicio-propietario-form input{
    width:100%;
    min-height:36px;
    height:36px;
    box-sizing:border-box;
    margin:0 !important;
}
.servicio-propietario-form .monto-servicio-input{
    padding-right:34px;
}
@media(max-width:900px){
    .servicios-propietario-tabla .servicio-detalle-th,
    .servicios-propietario-tabla .servicio-etiquetas{
        min-width:125px;
        width:125px;
    }
    .servicio-etiquetas-grid span{
        white-space:normal;
    }
}

/* Autoguardado de Servicios: confirmación flotante, sin ocupar espacio */
.servicio-propietario-form .servicio-save-status{
    position:absolute;
    right:8px;
    top:7px;
    z-index:5;
    display:flex;
    align-items:center;
    justify-content:center;
    width:22px;
    height:22px;
    min-height:0;
    margin:0;
    padding:0;
    font-size:18px;
    font-weight:700;
    line-height:1;
    user-select:none;
    pointer-events:none;
}
.servicio-propietario-form .servicio-save-status.ok{
    color:#1f9d55;
}
.servicio-propietario-form .servicio-save-status.error{
    color:#c62828;
}


/* Servicios del propietario: contenido de los campos alineado a la derecha */
.servicios-propietario-tabla .servicio-propietario-form input{
    text-align:right !important;
}


/* Portal inquilino: Servicios compacto con Ver más / Ver menos */
.portal-servicios-toggle-wrap{
    display:flex;
    justify-content:center;
    margin-top:10px;
}
.portal-servicios-toggle-wrap .btn{
    min-width:100px;
}





/* Envío de comprobantes: modal nativo, nunca queda recortado por la tabla */
.email-send-dialog{
    width:min(380px, calc(100vw - 32px));
    max-width:380px;
    padding:0;
    border:1px solid #ccd8da;
    border-radius:10px;
    box-shadow:0 16px 48px rgba(0,0,0,.24);
    background:#fff;
    color:var(--petroleo-900);
}
.email-send-dialog::backdrop{
    background:rgba(0,0,0,.24);
}
.email-send-dialog-form{
    padding:16px;
}
.email-send-dialog-head{
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:12px;
    margin-bottom:12px;
}
.email-send-dialog-head strong{
    font-size:15px;
}
.email-dialog-close{
    appearance:none;
    border:none;
    background:transparent;
    font-size:25px;
    line-height:1;
    cursor:pointer;
    color:var(--petroleo-700);
    padding:0 2px;
}
.email-send-option{
    display:flex;
    align-items:flex-start;
    gap:9px;
    margin:10px 0;
    cursor:pointer;
}
.email-send-option input{
    width:auto;
    margin:2px 0 0;
    flex:0 0 auto;
}
.email-send-option span{
    display:flex;
    flex-direction:column;
    line-height:1.25;
}
.email-send-option small{
    margin-top:2px;
    color:#617477;
    font-size:11.5px;
    overflow-wrap:anywhere;
}
.email-send-note{
    margin:13px 0;
    font-size:11.5px;
    line-height:1.4;
}
.email-send-dialog-actions{
    display:flex;
    justify-content:flex-end;
    gap:8px;
    margin-top:14px;
}


/* Modal de envío: evitar scroll horizontal y ajustar textos al ancho del box */
.email-send-dialog,
.email-send-dialog-form,
.email-send-note,
.email-send-option,
.email-send-option span,
.email-send-option small{
    max-width:100%;
    box-sizing:border-box;
}

.email-send-dialog{
    overflow-x:hidden;
}

.email-send-dialog-form{
    overflow-x:hidden;
}

.email-send-note{
    white-space:normal !important;
    overflow-wrap:anywhere;
    word-break:normal;
    width:100%;
}

.email-send-option span,
.email-send-option small{
    white-space:normal !important;
    overflow-wrap:anywhere;
    word-break:break-word;
    min-width:0;
}


/* Vista de contrato en solo lectura */
.contrato-readonly-notice{
    margin-bottom:14px;
    border-left-color:#3d6f73;
}
.contract-readonly input:disabled,
.contract-readonly select:disabled,
.contract-readonly textarea:disabled{
    opacity:1;
    color:inherit;
    -webkit-text-fill-color:currentColor;
    background:#f7f9f9;
    cursor:default;
}
