*{box-sizing:border-box}body{margin:0;font-family:Segoe UI,Arial,sans-serif;background:#f5f7fb;color:#1b1b1f}.app-shell{display:flex;min-height:100vh}.sidebar{width:260px;background:#fff;border-right:1px solid #e6e8ed;padding:18px 14px;display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:11px;padding:8px 9px 24px}.brand-mark{width:38px;height:38px;border-radius:10px;background:#0f6cbd;color:white;display:grid;place-items:center;font-weight:700}.brand strong{display:block;font-size:14px}.brand span{display:block;font-size:11px;color:#70757d;margin-top:2px}.nav{display:flex;flex-direction:column;gap:5px}.nav-item,.nav-group-title{border:0;background:none;text-decoration:none;color:#42464d;padding:10px 11px;border-radius:8px;font-size:14px;text-align:left;display:flex;justify-content:space-between;align-items:center;cursor:pointer}.nav-item{justify-content:flex-start;gap:10px}.nav-item:hover,.nav-group-title:hover{background:#f2f5f9}.nav-sub{display:none;padding:2px 0 5px 31px}.nav-group.open .nav-sub{display:block}.nav-sub a{display:block;text-decoration:none;color:#61656d;font-size:13px;padding:8px 10px;border-radius:7px}.nav-sub a:hover{background:#f3f6fa}.nav-sub a.active{background:#e8f1fb;color:#0f6cbd;font-weight:600}.sidebar-footer{margin-top:auto;color:#8a8f98;font-size:11px;padding:15px 9px}.main{flex:1;min-width:0}.topbar{height:68px;background:#fff;border-bottom:1px solid #e6e8ed;padding:0 30px;display:flex;align-items:center;justify-content:space-between}.top-company{font-size:10px;letter-spacing:.08em;color:#7a7f87}.user-chip{background:#f3f5f8;padding:8px 12px;border-radius:20px;font-size:12px}.user-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#107c10;margin-right:6px}.content{padding:30px;max-width:1450px;margin:auto}.page-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px}.breadcrumb{font-size:12px;color:#6d727b;margin-bottom:7px}.page-head h1{margin:0;font-size:28px;font-weight:650}.page-head p{margin:6px 0 0;color:#6d727b}.company-badge{background:#fff;border:1px solid #e3e6eb;border-radius:9px;padding:10px 13px;font-size:12px}.card{background:#fff;border:1px solid #e3e6eb;border-radius:13px;padding:22px;margin-bottom:18px;box-shadow:0 1px 2px #00000008}.card-title{display:flex;align-items:center;gap:12px;border-bottom:1px solid #edf0f3;padding-bottom:17px;margin-bottom:20px}.card-title.compact{margin-bottom:17px}.card-title h2{font-size:16px;margin:0;font-weight:650}.card-title span{font-size:12px;color:#777d86}.section-icon{width:34px;height:34px;border-radius:9px;background:#edf5fc;color:#0f6cbd;display:grid;place-items:center;font-size:11px;font-weight:700}.section-icon.accent{background:#eaf7ef;color:#107c10}.form-grid{display:grid;gap:17px}.grid-3{grid-template-columns:1fr 1fr 1fr}.span-2{grid-column:span 2}.span-3{grid-column:span 3}.field label{display:block;font-size:12px;font-weight:600;margin-bottom:7px;color:#42464d}.field input,.field select{width:100%;height:40px;border:1px solid #d6d9de;border-radius:7px;padding:0 11px;background:#fff;font:inherit;font-size:13px;outline:none}.field input:focus,.field select:focus{border-color:#0f6cbd;box-shadow:0 0 0 2px #0f6cbd20}.field small{display:block;color:#888e97;font-size:10px;margin-top:5px}.input-action{display:flex;gap:7px}.icon-button{width:42px;border:1px solid #d6d9de;background:#f7f8fa;border-radius:7px;cursor:pointer;font-size:20px;color:#0f6cbd}.suffix-input{display:flex}.suffix-input input{border-radius:7px 0 0 7px}.suffix-input span{width:40px;border:1px solid #d6d9de;border-left:0;border-radius:0 7px 7px 0;display:grid;place-items:center;color:#6d727b;background:#f7f8fa;font-size:12px}.two-columns{display:grid;grid-template-columns:1fr 1fr;gap:18px}.money-row{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid #eef0f3;font-size:13px}.money-row:last-child{border-bottom:0}.money-input{display:flex;align-items:center;width:190px}.money-input span{height:40px;padding:0 10px;display:grid;place-items:center;background:#f5f6f8;border:1px solid #d6d9de;border-right:0;border-radius:7px 0 0 7px;font-size:12px}.money-input input{height:40px;width:100%;border:1px solid #d6d9de;border-radius:0 7px 7px 0;text-align:right;padding:0 10px;font-size:13px}.money-value{font-variant-numeric:tabular-nums;font-weight:600}.money-row.total{font-weight:700;background:#f7faff;margin:8px -10px -8px;padding:13px 10px;border-radius:7px}.profit-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.profit-grid>div{background:#f7f9fc;border:1px solid #edf0f3;border-radius:10px;padding:15px}.profit-grid span{display:block;font-size:11px;color:#747a83;margin-bottom:8px}.profit-grid strong{font-size:19px}.cost-m{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:18px}.cost-m input{background:#f5f6f8}.actions{display:flex;justify-content:flex-end;gap:10px;margin-top:4px}.btn{height:42px;padding:0 18px;border:0;border-radius:8px;font:600 13px Segoe UI,Arial;cursor:pointer}.btn.primary{background:#0f6cbd;color:white}.btn.primary:hover{background:#115ea3}.btn.secondary{background:#fff;border:1px solid #d6d9de;color:#42464d}.btn.danger{background:#fff0f0;color:#c42b1c;border:1px solid #f0c9c4}.toast{padding:12px 15px;border-radius:8px;margin-bottom:17px;font-size:13px}.toast.success{background:#eaf7ef;color:#107c10;border:1px solid #c7ebd1}.toast.error{background:#fff0f0;color:#c42b1c;border:1px solid #f0c9c4}@media(max-width:950px){.sidebar{width:220px}.grid-3{grid-template-columns:1fr 1fr}.span-3{grid-column:span 2}.profit-grid{grid-template-columns:1fr 1fr}}@media(max-width:700px){.sidebar{display:none}.content{padding:18px}.topbar{padding:0 18px}.two-columns,.grid-3,.cost-m{grid-template-columns:1fr}.span-2,.span-3{grid-column:span 1}.page-head{display:block}.company-badge{display:inline-block;margin-top:12px}.profit-grid{grid-template-columns:1fr 1fr}}

.login-body{min-height:100vh;background:linear-gradient(135deg,#f4f8fc 0%,#eef3f9 100%);display:grid;place-items:center}.login-shell{width:100%;max-width:440px;padding:24px}.login-card,.company-card{background:#fff;border:1px solid #e2e6eb;border-radius:16px;box-shadow:0 12px 40px #18324d14;padding:30px}.login-brand{padding:0 0 28px}.login-title{margin-bottom:22px}.login-title h1{font-size:24px;margin:0 0 6px}.login-title p{margin:0;color:#737983;font-size:13px;line-height:1.5}.login-password{margin-top:17px}.login-button{width:100%;margin-top:22px}.login-footer{text-align:center;color:#9298a0;font-size:11px;margin-top:22px}.company-shell{width:100%;max-width:720px;padding:24px}.company-card{padding:28px}.company-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:25px}.company-top .brand{padding:0}.company-list{display:flex;flex-direction:column;gap:9px}.company-option{display:flex;align-items:center;gap:13px;border:1px solid #e0e4e9;border-radius:10px;padding:14px;cursor:pointer;transition:.15s}.company-option:hover{border-color:#0f6cbd;background:#f7fbff}.company-option input{accent-color:#0f6cbd}.company-logo{width:38px;height:38px;border-radius:9px;background:#edf5fc;color:#0f6cbd;display:grid;place-items:center}.company-data{flex:1}.company-data strong{display:block;font-size:14px}.company-data small{display:block;color:#818791;font-size:11px;margin-top:3px}.company-arrow{font-size:25px;color:#8b9199}.company-button{width:100%;margin-top:20px}.change-user{display:block;text-align:center;color:#0f6cbd;text-decoration:none;font-size:12px;margin-top:17px}.empty-state{padding:18px;background:#f7f8fa;border-radius:9px;color:#777d86;text-align:center;font-size:13px}.company-code{font-weight:400;color:#777d86}

.modal-backdrop{position:fixed;inset:0;background:#182b3d66;display:grid;place-items:center;padding:20px;z-index:1000}.modal-backdrop[hidden]{display:none}.modal-card{width:min(760px,100%);max-height:85vh;background:#fff;border-radius:14px;border:1px solid #dfe4ea;box-shadow:0 20px 60px #152c421f;display:flex;flex-direction:column;overflow:hidden}.modal-head{display:flex;justify-content:space-between;align-items:flex-start;padding:22px 24px 17px;border-bottom:1px solid #edf0f3}.modal-head h2{margin:0;font-size:20px}.modal-head p{margin:5px 0 0;color:#777d86;font-size:12px}.modal-close{border:0;background:#f3f5f7;border-radius:50%;width:34px;height:34px;font-size:23px;cursor:pointer;color:#555}.client-search{margin:17px 24px;position:relative}.client-search input{width:100%;height:42px;border:1px solid #d4d9df;border-radius:8px;padding:0 40px 0 12px;font-size:13px;outline:none}.client-search input:focus{border-color:#0f6cbd;box-shadow:0 0 0 2px #0f6cbd20}.client-search span{position:absolute;right:13px;top:9px;font-size:20px;color:#0f6cbd}.client-table-wrap{margin:0 24px;overflow:auto;border:1px solid #e3e6ea;border-radius:8px;min-height:220px}.client-table{width:100%;border-collapse:collapse;font-size:13px}.client-table th{position:sticky;top:0;background:#f5f7fa;color:#555c65;text-align:left;padding:11px;border-bottom:1px solid #e0e4e8;font-size:11px;text-transform:uppercase}.client-table td{padding:11px;border-bottom:1px solid #edf0f2}.client-table tbody tr{cursor:pointer}.client-table tbody tr:hover{background:#edf6ff}.client-table th:first-child,.client-table td:first-child{width:100px}.loading{text-align:center;color:#7b8189;padding:35px!important}.error-text{color:#c42b1c}.modal-foot{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:16px 24px;background:#fafbfc;border-top:1px solid #edf0f3;color:#777d86;font-size:11px}.modal-foot .btn{flex:none}

.client-table tbody tr.selected-client{background:#dceeff;outline:1px solid #0f6cbd}.client-table tbody tr.selected-client td{color:#0b5b9d;font-weight:600}

.edit-banner{display:flex;align-items:center;justify-content:space-between;background:#eef7ff;border:1px solid #c9e4fa;border-left:4px solid #0f6cbd;border-radius:9px;padding:10px 14px;margin:-8px 0 18px;font-size:13px;color:#24506f}.edit-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#0f6cbd;margin-right:8px}.btn.mini{height:32px;padding:0 12px;font-size:12px}.obra-modal{width:min(980px,100%)}.obra-filters{display:grid;grid-template-columns:1fr 160px;gap:10px;margin:17px 24px}.obra-filters select{height:42px;border:1px solid #d4d9df;border-radius:8px;padding:0 10px;background:white;font:inherit;font-size:13px}.no-margin{margin:0}.obra-table-wrap{min-height:320px}.obra-table-wrap .client-table th:first-child,.obra-table-wrap .client-table td:first-child{width:135px}.obra-table-wrap .client-table th:nth-child(2),.obra-table-wrap .client-table td:nth-child(2){min-width:360px}.modal-buttons{display:flex;gap:8px}.search-main{font-size:19px}.client-table tbody tr.selected-client{background:#dceeff;outline:1px solid #0f6cbd}.client-table tbody tr.selected-client td{color:#0b5b9d;font-weight:600}@media(max-width:700px){.obra-filters{grid-template-columns:1fr}.modal-foot{align-items:flex-start;flex-direction:column}.modal-buttons{width:100%;justify-content:flex-end}}

/* ===== Situación de Obra ===== */
.situation-card{background:#fff;border:1px solid #dfe4e9;border-radius:10px;margin-bottom:12px;box-shadow:0 1px 2px #00000008;overflow:hidden}.situation-section-title{display:flex;align-items:center;gap:10px}.situation-section-title h2{font-size:15px;margin:0;font-weight:650}.situation-section-title span:not(.section-icon){font-size:11px;color:#7a8088}.initial-card{padding:12px 16px}.initial-grid{display:grid;grid-template-columns:150px minmax(250px,1fr) minmax(250px,1fr) 160px 170px;gap:10px;align-items:end}.initial-grid .field label,.report-controls .field label{font-size:11px;margin-bottom:5px}.initial-grid input,.initial-grid select,.report-controls input,.report-controls select{height:34px;font-size:12px}.status-panel{height:82px;border:1px solid #e0e4e8;border-radius:7px;background:#fafbfc;padding:9px 11px;display:flex;flex-direction:column;justify-content:center}.status-panel span{font-size:10px;color:#70767e;text-transform:uppercase;letter-spacing:.06em}.status-panel strong{font-size:13px;margin:3px 0 6px}.status-panel input{height:28px;border:1px solid #d6dbe1;border-radius:5px;padding:0 7px;background:#fff;font-size:11px}.report-card{padding:10px 16px}.report-head{display:flex;align-items:end;justify-content:space-between;gap:20px}.report-controls{display:grid;grid-template-columns:160px 160px 80px;gap:10px;min-width:420px}.igv-field input{text-align:right}.budget-card,.facturado-card,.gastado-card{padding:0 14px 12px}.block-title{height:30px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #edf0f3;margin-bottom:7px}.block-title>span:first-child{font-size:12px;font-weight:650;color:#42474e}.budget-grid{display:grid;grid-template-columns:125px 1fr 1fr;column-gap:12px;row-gap:5px;align-items:center;max-width:760px}.subhead{text-align:center;font-size:10px;font-weight:600;color:#4f555d}.row-label{font-size:11px;color:#42474e;text-align:right;padding-right:5px}.dual{display:grid;grid-template-columns:1fr 86px;align-items:center;gap:5px}.dual span{font-size:9px;color:#7b8189;text-align:right}.situation-card input[readonly]{background:#fafbfc;color:#17191c;border-color:#dfe3e7;text-align:right}.dual input,.three-year-grid input,.gastado-grid input{height:29px;border:1px solid #d6dbe0;border-radius:4px;padding:0 7px;font-size:11px}.three-year-grid{display:grid;grid-template-columns:125px 1fr 1fr 1fr;gap:5px 12px;align-items:center}.three-year-grid .subhead{text-align:center}.blue-field{background:#d9f8f8!important}.yellow-field{background:#fffda9!important}.accum-head{display:flex;justify-content:center;align-items:center;gap:7px}.tiny-action{height:22px;min-width:30px;border:1px solid #cbd2d9;border-radius:4px;background:#fff;cursor:pointer;color:#0f6cbd;font-size:11px}.gastado-grid{display:grid;grid-template-columns:125px 1.1fr 1.7fr 1fr 1.1fr;column-gap:12px;row-gap:4px;align-items:center}.group-title{text-align:center;font-size:10px;font-weight:600;color:#4f555d}.gastado-grid .subhead{font-size:9px}.orange-field{background:#ffd09c!important}.projected-card{padding:10px 14px}.projected-note{font-size:10px;color:#858b93}.projected-grid{display:grid;grid-template-columns:repeat(4,1fr) 180px;gap:10px;align-items:end}.projected-grid>div:not(.project-input){background:#f7f9fc;border:1px solid #edf0f3;border-radius:7px;padding:9px 11px}.projected-grid span{display:block;font-size:9px;color:#777e87;margin-bottom:4px}.projected-grid strong{font-size:14px}.project-input label{display:block;font-size:10px;font-weight:600;margin-bottom:5px}.project-input input{width:100%;height:34px;text-align:right}.situation-actions{display:flex;justify-content:flex-end;gap:7px;margin:4px 0 14px}.situation-actions .btn{height:36px;padding:0 13px;font-size:11px}.situation-actions .btn:disabled{opacity:.45;cursor:not-allowed}.detail-modal{width:min(1100px,96vw)}.detail-table-wrap{max-height:65vh}.detail-table td{white-space:nowrap;font-size:11px}.detail-table-wrap .client-table{min-width:760px}
@media(max-width:1100px){.initial-grid{grid-template-columns:140px 1fr 1fr}.status-panel{grid-column:3}.report-head{display:block}.report-controls{margin-top:8px}.projected-grid{grid-template-columns:1fr 1fr}.gastado-grid{grid-template-columns:110px 1fr 1fr 1fr 1fr}.three-year-grid{grid-template-columns:105px 1fr 1fr 1fr}}
@media(max-width:750px){.initial-grid,.report-controls,.budget-grid,.three-year-grid,.gastado-grid,.projected-grid{grid-template-columns:1fr}.row-label{text-align:left}.dual{grid-template-columns:120px 1fr}.status-panel{grid-column:auto}.situation-actions{flex-wrap:wrap;justify-content:flex-start}.report-controls{min-width:0}}
@media print{.sidebar,.topbar,.page-head .company-badge,.situation-actions,.modal-backdrop{display:none!important}.content{padding:0}.situation-card{box-shadow:none;break-inside:avoid}.projected-card{display:none}}
.budget-grid{grid-template-columns:125px 1fr 1fr;max-width:900px}.budget-subheads,.budget-pair{display:grid;grid-template-columns:1fr 1fr;gap:5px}.budget-subheads span{text-align:center;font-size:9px;color:#7b8189}.budget-pair input{width:100%;height:29px;border:1px solid #d6dbe0;border-radius:4px;padding:0 7px;font-size:11px;text-align:right;background:#fafbfc}
.budget-pair input:nth-child(1){background:#d9f8f8}.budget-pair input:nth-child(2){background:#fff}

/* Ayuda Facturado: presentación equivalente al formulario WinForms */
.detail-modal{width:min(1100px,96vw)}
.detail-table-wrap{max-height:65vh;overflow:auto}
.detail-table-wrap .client-table{min-width:900px}
.detail-table-wrap .client-table th{white-space:nowrap}
.detail-table-wrap .client-table td.amount{text-align:right;font-variant-numeric:tabular-nums}
#detalleTotal{display:grid;grid-template-columns:auto 180px 180px;gap:10px;align-items:center;justify-content:end;min-width:420px;padding:8px 12px;background:#eef6ff;border:1px solid #d6e7f7;border-radius:6px;color:#17212b}
#detalleTotal span{display:block;text-align:right;background:#fff;border:1px solid #d6dfe8;border-radius:4px;padding:7px 10px;font-variant-numeric:tabular-nums}
