.tabs a.soon{opacity:.45;cursor:not-allowed}
.document-grid{display:grid;gap:12px}
.document-card{border:1px solid var(--line);border-radius:10px;padding:16px;display:flex;align-items:center;justify-content:space-between;gap:20px}
.document-card h3{margin:8px 0 2px}
.document-card small{color:var(--muted)}
@media(max-width:700px){.document-card{align-items:flex-start;flex-direction:column}.tabs{overflow:auto}}
.condition-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:22px}.condition-total{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px;display:flex;align-items:center;gap:12px}.condition-total>span,.condition-dot{width:14px;height:14px;border-radius:50%;display:inline-block;flex:0 0 auto}.condition-total strong{display:block;font-size:25px}.condition-total small{color:var(--muted)}.good>span,.condition-dot.good{background:#58bd22}.alert>span,.condition-dot.alert{background:#f2be00}.critical>span,.condition-dot.critical{background:#e8442e}.offline>span,.condition-dot.offline{background:#8e8e94}.fleet-grid{display:grid;grid-template-columns:repeat(3,minmax(240px,1fr));gap:16px;margin-bottom:22px}.fleet-card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:18px;color:inherit;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:14px}.fleet-card:hover{transform:translateY(-2px)}.fleet-top{display:flex;justify-content:space-between;gap:14px}.fleet-top h2{margin:0 0 4px;color:#087bb5}.fleet-data{display:grid;gap:6px;color:var(--muted);font-size:14px}.fleet-status{color:#fff;padding:9px 12px;font-weight:700;border-radius:7px}.fleet-status.good{background:#58bd22}.fleet-status.alert{background:#e6ae00}.fleet-status.critical{background:#e8442e}.fleet-status.offline{background:#8e8e94}.condition-source{color:#ad2f20}.condition-badge{display:inline-flex;align-items:center;padding:7px 10px;border-radius:20px;font-weight:700;white-space:nowrap}.condition-badge.good{background:#e6f5de;color:#347b14}.condition-badge.alert{background:#fff4c7;color:#856500}.condition-badge.critical{background:#fde3df;color:#a62c1c}.condition-badge.offline{background:#ececef;color:#57575d}.life-ring{--color:#58bd22;width:58px;height:58px;border-radius:50%;background:conic-gradient(var(--color) calc(var(--life)*1%),#e5e9ec 0);display:grid;place-items:center}.life-ring:after{content:"";width:42px;height:42px;background:#fff;border-radius:50%;grid-area:1/1}.life-ring span{grid-area:1/1;z-index:1;font-size:12px;font-weight:700}.life-ring.alert{--color:#e6ae00}.life-ring.critical{--color:#e8442e}.life-ring.offline{--color:#8e8e94}.upcoming{margin-top:10px}.calendar-sync{padding:20px;margin-bottom:20px}.calendar-sync h2{margin-top:0}.calendar-sync small{display:block;margin-top:10px;color:var(--muted)}.calendar-nav{display:flex;align-items:center;justify-content:space-between;margin:18px 0}.calendar-nav h2{margin:0}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(120px,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:12px;overflow:auto}.calendar-weekday{background:#eaf0f4;padding:10px;text-align:center;font-weight:700}.calendar-day{background:#fff;min-height:125px;padding:9px}.calendar-day.muted{background:#f5f7f8}.calendar-day.today{box-shadow:inset 0 0 0 2px #207e9a}.calendar-event{display:flex;flex-direction:column;background:#e4f3f7;border-left:4px solid #207e9a;border-radius:5px;padding:6px;margin-top:7px;color:#173044;font-size:12px}.calendar-event span{white-space:normal;margin-top:2px}@media(max-width:1050px){.fleet-grid{grid-template-columns:repeat(2,1fr)}.condition-summary{grid-template-columns:repeat(2,1fr)}}@media(max-width:700px){.fleet-grid,.condition-summary{grid-template-columns:1fr}.calendar-grid{min-width:850px}}

.life-chart{position:relative;background:#f7f9fa;border:1px solid var(--line);border-radius:12px;padding:15px;margin-bottom:18px}.life-chart h3{margin:0 0 8px}.life-chart svg{width:100%;height:220px;overflow:visible}.life-chart polyline{fill:none;stroke:#207e9a;stroke-width:1.5}.life-chart .axis{stroke:#9ba8b1;stroke-width:.5}.life-chart .limit{stroke-width:.6;stroke-dasharray:2 2}.life-chart .limit.alert{stroke:#e6ae00}.life-chart .limit.critical{stroke:#e8442e}.chart-labels{font-size:3px;fill:#65727d}.chart-current{position:absolute;right:25px;top:18px;text-align:right}.chart-current strong{display:block;font-size:24px;color:#207e9a}.chart-current span{font-size:12px;color:var(--muted)}

/* Panel interactivo de flota */
.fleet-toolbar{display:grid;grid-template-columns:minmax(260px,1fr) 210px 190px auto;gap:10px;margin:0 0 18px;align-items:center}.fleet-toolbar select{height:46px;border:1px solid var(--line);border-radius:9px;background:#fff;padding:0 12px;color:var(--text)}.condition-total{font:inherit;text-align:left;cursor:pointer;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.condition-total:hover,.condition-total:focus-visible{transform:translateY(-3px);box-shadow:0 10px 24px rgba(18,44,64,.12);outline:none;border-color:#95aab8}.fleet-card{position:relative;overflow:hidden;border-top:5px solid #58bd22;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}.fleet-card:has(.fleet-status.alert){border-top-color:#e6ae00}.fleet-card:has(.fleet-status.critical){border-top-color:#e8442e}.fleet-card:has(.fleet-status.offline){border-top-color:#8e8e94}.fleet-card:hover{transform:translateY(-5px);box-shadow:0 14px 30px rgba(18,44,64,.16)}.fleet-card[hidden]{display:none!important}.fleet-status{margin-top:auto}.page-head>.actions{display:flex;gap:8px;flex-wrap:wrap}
@media(max-width:1000px){.fleet-toolbar{grid-template-columns:1fr 1fr}.fleet-toolbar .search{grid-column:1/-1}}@media(max-width:650px){.fleet-toolbar{grid-template-columns:1fr}.fleet-toolbar .search{grid-column:auto}.page-head>.actions{width:100%}.page-head>.actions .btn{flex:1}}

/* Condición visual de componentes */
.condition-dialog{width:min(1180px,96vw);max-width:1180px}.condition-overview{display:grid;grid-template-columns:1.25fr 1fr;gap:18px;margin-bottom:18px}.component-visual,.measurement-photo{background:#f8fafb;border:1px solid var(--line);border-radius:14px;padding:18px;min-height:300px}.component-visual h3{margin:0 0 16px}.visual-compare{display:grid;grid-template-columns:1fr 190px;gap:16px;align-items:center}.visual-compare>div:first-child{display:flex;align-items:end;justify-content:center;gap:45px;min-height:195px;position:relative}.disc{width:145px;height:145px;border-radius:50%;background:radial-gradient(circle,#172334 0 13%,#a87838 14% 18%,#777 19% 68%,#999 69%);box-shadow:18px 8px 0 #555,0 14px 25px #9aa7af;transform:rotateY(-18deg)}.disc.current{width:130px;height:130px;box-shadow:10px 6px 0 #555,0 14px 25px #9aa7af}.rope{width:115px;height:115px;border-radius:50%;background:repeating-radial-gradient(circle,#3f4a50 0 5px,#b8c0c4 6px 9px);box-shadow:10px 5px 0 #4a5358}.rope.current{width:92px;height:92px}.rail-shape{font:900 180px/1 Georgia;color:#687982;text-shadow:12px 7px 0 #43525a}.rail-shape.current{font-size:160px;color:#8d989e}.motor-shape,.contactor-shape,.generic-shape{width:145px;height:145px;display:grid;place-items:center;border-radius:26px;background:linear-gradient(145deg,#748994,#334852);color:#fff;font-size:62px;font-weight:800;box-shadow:12px 9px 0 #253640}.contactor-shape{border-radius:10px}.measure-values{display:grid!important;gap:10px!important;min-height:0!important;align-self:center}.measure-values span{padding:10px;border-left:4px solid #207e9a;background:#fff;border-radius:7px;color:var(--muted)}.measure-values strong{display:block;color:var(--text);font-size:19px}.measurement-photo{display:grid;place-items:center}.measurement-photo a{position:relative;display:block;width:100%;height:100%}.measurement-photo img{width:100%;height:280px;object-fit:cover;border-radius:10px}.measurement-photo a span{position:absolute;right:10px;bottom:10px;background:#173044;color:#fff;padding:9px 12px;border-radius:8px}.photo-empty{color:var(--muted)}.condition-summary-line{display:flex;align-items:center;gap:16px;margin:15px 0}.measurement-form{border-top:1px solid var(--line);padding-top:18px}.measurement-form .kind-rope,.measurement-form .kind-motor,.measurement-form .kind-contactor,.measurement-form .kind-rail{display:none}.measurement-form[data-kind="rope"] .kind-rope,.measurement-form[data-kind="motor"] .kind-motor,.measurement-form[data-kind="contactor"] .kind-contactor,.measurement-form[data-kind="rail"] .kind-rail{display:flex}.measurement-form[data-kind="motor"] .measurement-dimensional,.measurement-form[data-kind="contactor"] .measurement-dimensional{display:none}.fast-submit.is-saving{opacity:.72;pointer-events:none}.fast-submit.is-saving button[type="submit"]::after{content:' Guardando…'}
@media(max-width:850px){.condition-overview{grid-template-columns:1fr}.visual-compare{grid-template-columns:1fr}.measurement-photo img{height:240px}.disc{width:115px;height:115px}.disc.current{width:100px;height:100px}}

/* Visuales técnicos V2.1 */
.technical-card{overflow:hidden}
.technical-svg{display:block;width:100%;height:auto;min-height:270px;margin-top:8px;overflow:visible}
.technical-svg text{font-family:Inter,Arial,sans-serif;fill:#17324d}
.technical-svg .svg-head{font-size:22px;font-weight:700}
.technical-svg .svg-value{font-size:19px;font-weight:800}
.technical-svg .svg-limit{font-size:17px;font-weight:700;fill:#52677b}
.technical-svg .svg-wear{font-size:17px;font-weight:800;fill:#d42f2f}
.technical-svg .svg-note{font-size:16px;font-weight:600;fill:#65798a}
.technical-svg .dimension{stroke:#17324d;stroke-width:2;fill:none}
.technical-svg .extension{stroke:#527089;stroke-width:1.5;fill:none}
.technical-svg .dimension-fill{fill:#17324d}
.technical-svg .wear-line{stroke:#df3f3f;stroke-width:3;fill:none}
.simple-technical-symbol{display:grid;place-items:center;width:150px;height:150px;margin:35px auto;border:18px solid #7d8c94;border-radius:50%;font-size:64px;font-weight:800;color:#17324d;background:linear-gradient(135deg,#fff,#d7e0e4)}
.history-photo{position:relative;display:inline-block;width:76px;height:54px;border:1px solid #cad6df;border-radius:8px;overflow:hidden;background:#eef3f6}
.history-photo img{width:100%;height:100%;object-fit:cover;display:block}
.history-photo span{position:absolute;right:3px;bottom:3px;padding:2px 5px;border-radius:5px;background:rgba(16,43,65,.82);color:#fff;font-size:11px}
.asset-compare{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:start}
.asset-compare section{text-align:center;min-width:0}
.asset-compare h4{margin:0 0 4px;font-size:18px;color:#17324d}
.asset-compare small{display:block;margin-top:2px;color:#52677b;font-weight:600}
.asset-object{position:relative;height:270px;display:grid;place-items:center}
.asset-object>img{display:block;width:100%;height:100%;object-fit:contain;filter:drop-shadow(8px 12px 10px rgba(28,48,61,.18))}
.brake-assets .asset-object>img{width:255px;height:255px}
.brake-assets .asset-object.current>img{width:235px;height:235px}
.edge-measure{position:absolute;top:28px;left:61%;width:25%;height:28px;color:#17324d}
.edge-measure i{position:absolute;left:0;right:0;top:19px;border-top:2px solid #17324d}
.edge-measure i:before,.edge-measure i:after{content:"";position:absolute;top:-8px;height:16px;border-left:2px solid #17324d}
.edge-measure i:before{left:0}.edge-measure i:after{right:0}
.edge-measure strong{position:absolute;left:50%;bottom:12px;transform:translateX(-50%);white-space:nowrap;font-size:16px}
.wear-callout{position:absolute;right:0;top:82px;padding-left:34px;color:#d92e2e;font-weight:700;text-align:left}
.wear-callout:before{content:"";position:absolute;left:0;top:15px;width:28px;border-top:3px solid #d92e2e;transform:rotate(-28deg)}
.rope-assets .asset-object{height:260px}
.rope-assets .asset-object>img{max-width:340px}
.rope-assets .asset-object.current>img{max-width:318px}
.caliper-reading{position:absolute;left:72%;top:38%;transform:translate(-50%,-50%);width:29%;color:#162c3a;font:800 17px/1 monospace;text-align:center;white-space:nowrap}
.rope-callout{position:absolute;right:0;bottom:22px;padding:7px 9px;border-left:3px solid #d92e2e;background:rgba(255,255,255,.9);color:#d92e2e;font-size:12px;font-weight:700;text-align:left}
@media(max-width:720px){.asset-compare{grid-template-columns:1fr}.asset-object{height:245px}.wear-callout{right:3%}}
@media(max-width:760px){.technical-svg{min-height:190px}.technical-svg .svg-head{font-size:15px}.technical-svg .svg-value{font-size:13px}.history-photo{width:62px;height:46px}}

/* Inventario */
.inventory-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}
.inventory-stat{display:flex;align-items:center;gap:13px;padding:16px;background:#fff;border:1px solid var(--line);border-radius:12px;color:inherit;box-shadow:var(--shadow)}
.inventory-stat>span{width:42px;height:42px;display:grid;place-items:center;flex:0 0 auto;border-radius:10px;background:#e8f1f5;color:#207e9a;font-size:20px}
.inventory-stat strong{display:block;font-size:24px}.inventory-stat small{color:var(--muted)}
.inventory-stat.active{border-color:#207e9a;box-shadow:0 0 0 2px rgba(32,126,154,.12)}
.inventory-stat.electrical>span{background:#fff4cf;color:#a66d00}.inventory-stat.consumable>span{background:#e6f5de;color:#347b14}.inventory-stat.steel>span{background:#eceff2;color:#4e606c}
.inventory-toolbar{display:grid;gap:12px}.inventory-tabs{display:flex;gap:8px;flex-wrap:wrap}
.inventory-tabs a{padding:8px 12px;background:#fff;border:1px solid var(--line);border-radius:20px;color:var(--muted)}
.inventory-tabs a.active{background:#207e9a;border-color:#207e9a;color:#fff}
.inventory-category{display:inline-flex;padding:6px 9px;border-radius:15px;font-size:12px;font-weight:700;background:#e8f1f5;color:#207e9a;white-space:nowrap}
.inventory-category.electrical{background:#fff4cf;color:#8a6200}.inventory-category.consumable{background:#e6f5de;color:#347b14}.inventory-category.steel{background:#eceff2;color:#4e606c}
.inventory-table td:last-child{white-space:nowrap}
@media(max-width:1000px){.inventory-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.inventory-summary{grid-template-columns:1fr}.inventory-stat{padding:12px}}

/* Administración y cobranza */
.admin-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:20px}.admin-summary article{padding:18px;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);border-left:5px solid #207e9a}.admin-summary article.paid{border-left-color:#2f9d57}.admin-summary article.pending{border-left-color:#d99b00}.admin-summary article.overdue{border-left-color:#c73b3b}.admin-summary small{display:block;color:var(--muted);font-weight:700}.admin-summary strong{display:block;margin-top:5px;font-size:25px}.admin-toolbar{display:grid;gap:12px}.admin-table td{vertical-align:top}.admin-table small{color:var(--muted)}.admin-table tr.admin-row-overdue td{background:#fff3f3}.admin-table tr.admin-row-soon td{background:#fffaf0}.admin-alert,.admin-warning{display:inline-flex;margin-top:4px;padding:3px 7px;border-radius:10px;font-size:11px;font-weight:800}.admin-alert{background:#f9dada;color:#a91f1f}.admin-warning{background:#ffedb8;color:#8a6200}.admin-positive{color:#257a43;font-weight:800}.admin-pill{display:inline-flex;padding:5px 8px;border-radius:14px;background:#edf2f5;color:#42596a;font-size:11px;font-weight:800;white-space:nowrap}.admin-pill.pagado{background:#dff2d7;color:#27720f}.admin-pill.pago-parcial{background:#fff0bd;color:#8a6200}.admin-pill.pendiente{background:#ffe2bb;color:#985b00}.admin-pill.cancelado{background:#eceff1;color:#65737d}.admin-dialog{width:min(820px,96vw)}.admin-detail{width:min(980px,96vw)}.admin-balance{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:22px}.admin-balance span{padding:14px;background:#f6f9fa;border:1px solid var(--line);border-radius:10px}.admin-balance small,.admin-balance strong{display:block}.admin-balance strong{font-size:22px}.admin-file-form{display:flex;gap:10px;align-items:center;margin-bottom:14px}.admin-file-form input{flex:1}.admin-files{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.admin-files a{display:flex;justify-content:space-between;gap:12px;padding:12px;border:1px solid var(--line);border-radius:9px}.admin-files small{color:var(--muted)}
@media(max-width:1000px){.admin-summary{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.admin-summary,.admin-balance,.admin-files{grid-template-columns:1fr}.admin-file-form{align-items:stretch;flex-direction:column}}
