:root{--react-pdf-annotation-layer: 1;--annotation-unfocused-field-background: url("data:image/svg+xml;charset=UTF-8,<svg width='1px' height='1px' xmlns='http://www.w3.org/2000/svg'><rect width='100%' height='100%' style='fill:rgba(0, 54, 255, 0.13);'/></svg>");--input-focus-border-color: Highlight;--input-focus-outline: 1px solid Canvas;--input-unfocused-border-color: transparent;--input-disabled-border-color: transparent;--input-hover-border-color: black;--link-outline: none}@media screen and (forced-colors: active){:root{--input-focus-border-color: CanvasText;--input-unfocused-border-color: ActiveText;--input-disabled-border-color: GrayText;--input-hover-border-color: Highlight;--link-outline: 1.5px solid LinkText}.annotationLayer .textWidgetAnnotation :is(input,textarea):required,.annotationLayer .choiceWidgetAnnotation select:required,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:required{outline:1.5px solid selectedItem}.annotationLayer .linkAnnotation:hover{-webkit-backdrop-filter:invert(100%);backdrop-filter:invert(100%)}}.annotationLayer{position:absolute;top:0;left:0;pointer-events:none;transform-origin:0 0;z-index:3}.annotationLayer[data-main-rotation="90"] .norotate{transform:rotate(270deg) translate(-100%)}.annotationLayer[data-main-rotation="180"] .norotate{transform:rotate(180deg) translate(-100%,-100%)}.annotationLayer[data-main-rotation="270"] .norotate{transform:rotate(90deg) translateY(-100%)}.annotationLayer canvas{position:absolute;width:100%;height:100%}.annotationLayer section{position:absolute;text-align:initial;pointer-events:auto;box-sizing:border-box;margin:0;transform-origin:0 0}.annotationLayer .linkAnnotation{outline:var(--link-outline)}.textLayer.selecting~.annotationLayer section{pointer-events:none}.annotationLayer :is(.linkAnnotation,.buttonWidgetAnnotation.pushButton)>a{position:absolute;font-size:1em;top:0;left:0;width:100%;height:100%}.annotationLayer :is(.linkAnnotation,.buttonWidgetAnnotation.pushButton)>a:hover{opacity:.2;background:#ff0;box-shadow:0 2px 10px #ff0}.annotationLayer .textAnnotation img{position:absolute;cursor:pointer;width:100%;height:100%;top:0;left:0}.annotationLayer .textWidgetAnnotation :is(input,textarea),.annotationLayer .choiceWidgetAnnotation select,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input{background-image:var(--annotation-unfocused-field-background);border:2px solid var(--input-unfocused-border-color);box-sizing:border-box;font:calc(9px * var(--total-scale-factor)) sans-serif;height:100%;margin:0;vertical-align:top;width:100%}.annotationLayer .textWidgetAnnotation :is(input,textarea):required,.annotationLayer .choiceWidgetAnnotation select:required,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:required{outline:1.5px solid red}.annotationLayer .choiceWidgetAnnotation select option{padding:0}.annotationLayer .buttonWidgetAnnotation.radioButton input{border-radius:50%}.annotationLayer .textWidgetAnnotation textarea{resize:none}.annotationLayer .textWidgetAnnotation :is(input,textarea)[disabled],.annotationLayer .choiceWidgetAnnotation select[disabled],.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input[disabled]{background:none;border:2px solid var(--input-disabled-border-color);cursor:not-allowed}.annotationLayer .textWidgetAnnotation :is(input,textarea):hover,.annotationLayer .choiceWidgetAnnotation select:hover,.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:hover{border:2px solid var(--input-hover-border-color)}.annotationLayer .textWidgetAnnotation :is(input,textarea):hover,.annotationLayer .choiceWidgetAnnotation select:hover,.annotationLayer .buttonWidgetAnnotation.checkBox input:hover{border-radius:2px}.annotationLayer .textWidgetAnnotation :is(input,textarea):focus,.annotationLayer .choiceWidgetAnnotation select:focus{background:none;border:2px solid var(--input-focus-border-color);border-radius:2px;outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) :focus{background-image:none;background-color:transparent}.annotationLayer .buttonWidgetAnnotation.checkBox :focus{border:2px solid var(--input-focus-border-color);border-radius:2px;outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation.radioButton :focus{border:2px solid var(--input-focus-border-color);outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after,.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before{background-color:CanvasText;content:"";display:block;position:absolute}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before,.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after{height:80%;left:45%;width:1px}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:before{transform:rotate(45deg)}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked:after{transform:rotate(-45deg)}.annotationLayer .buttonWidgetAnnotation.radioButton input:checked:before{border-radius:50%;height:50%;left:30%;top:20%;width:50%}.annotationLayer .textWidgetAnnotation input.comb{font-family:monospace;padding-left:2px;padding-right:0}.annotationLayer .textWidgetAnnotation input.comb:focus{width:103%}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input{-webkit-appearance:none;-moz-appearance:none;appearance:none}.annotationLayer .popupTriggerArea{height:100%;width:100%}.annotationLayer .fileAttachmentAnnotation .popupTriggerArea{position:absolute}.annotationLayer .popupWrapper{position:absolute;font-size:calc(9px * var(--total-scale-factor));width:100%;min-width:calc(180px * var(--total-scale-factor));pointer-events:none}.annotationLayer .popup{position:absolute;max-width:calc(180px * var(--total-scale-factor));background-color:#ff9;box-shadow:0 calc(2px * var(--total-scale-factor)) calc(5px * var(--total-scale-factor)) #888;border-radius:calc(2px * var(--total-scale-factor));padding:calc(6px * var(--total-scale-factor));margin-left:calc(5px * var(--total-scale-factor));cursor:pointer;font:message-box;white-space:normal;word-wrap:break-word;pointer-events:auto}.annotationLayer .popup>*{font-size:calc(9px * var(--total-scale-factor))}.annotationLayer .popup h1{display:inline-block}.annotationLayer .popupDate{display:inline-block;margin-left:calc(5px * var(--total-scale-factor))}.annotationLayer .popupContent{border-top:1px solid rgba(51,51,51,1);margin-top:calc(2px * var(--total-scale-factor));padding-top:calc(2px * var(--total-scale-factor))}.annotationLayer .richText>*{white-space:pre-wrap;font-size:calc(9px * var(--total-scale-factor))}.annotationLayer .highlightAnnotation,.annotationLayer .underlineAnnotation,.annotationLayer .squigglyAnnotation,.annotationLayer .strikeoutAnnotation,.annotationLayer .freeTextAnnotation,.annotationLayer .lineAnnotation svg line,.annotationLayer .squareAnnotation svg rect,.annotationLayer .circleAnnotation svg ellipse,.annotationLayer .polylineAnnotation svg polyline,.annotationLayer .polygonAnnotation svg polygon,.annotationLayer .caretAnnotation,.annotationLayer .inkAnnotation svg polyline,.annotationLayer .stampAnnotation,.annotationLayer .fileAttachmentAnnotation{cursor:pointer}.annotationLayer section svg{position:absolute;width:100%;height:100%;top:0;left:0}.annotationLayer .annotationTextContent{position:absolute;width:100%;height:100%;opacity:0;color:transparent;-webkit-user-select:none;user-select:none;pointer-events:none}.annotationLayer .annotationTextContent span{width:100%;display:inline-block}:root{--react-pdf-text-layer: 1;--highlight-bg-color: rgba(180, 0, 170, 1);--highlight-selected-bg-color: rgba(0, 100, 0, 1)}@media screen and (forced-colors: active){:root{--highlight-bg-color: Highlight;--highlight-selected-bg-color: ButtonText}}[data-main-rotation="90"]{transform:rotate(90deg) translateY(-100%)}[data-main-rotation="180"]{transform:rotate(180deg) translate(-100%,-100%)}[data-main-rotation="270"]{transform:rotate(270deg) translate(-100%)}.textLayer{position:absolute;text-align:initial;top:0;right:0;bottom:0;left:0;overflow:hidden;line-height:1;text-size-adjust:none;forced-color-adjust:none;transform-origin:0 0;z-index:2}.textLayer :is(span,br){color:transparent;position:absolute;white-space:pre;cursor:text;margin:0;transform-origin:0 0}.textLayer span.markedContent{top:0;height:0}.textLayer .highlight{margin:-1px;padding:1px;background-color:var(--highlight-bg-color);border-radius:4px}.textLayer .highlight.appended{position:initial}.textLayer .highlight.begin{border-radius:4px 0 0 4px}.textLayer .highlight.end{border-radius:0 4px 4px 0}.textLayer .highlight.middle{border-radius:0}.textLayer .highlight.selected{background-color:var(--highlight-selected-bg-color)}.textLayer br::selection{background:transparent}.textLayer .endOfContent{display:block;position:absolute;top:100%;right:0;bottom:0;left:0;z-index:-1;cursor:default;-webkit-user-select:none;user-select:none}.textLayer.selecting .endOfContent{top:0}.hiddenCanvasElement{position:absolute;top:0;left:0;width:0;height:0;display:none}@font-face{font-family:Montserrat;font-style:normal;font-weight:300;font-display:swap;src:url(/fonts/montserrat-300.woff2) format("woff2")}@font-face{font-family:Montserrat;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/montserrat-600.woff2) format("woff2")}@font-face{font-family:Montserrat;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/montserrat-700.woff2) format("woff2")}:root{--ink: #000000;--amber: #f2a900;--blue: #1b3a5b;--red: #b3261e;--green: #1b7a3d;--bg: #f5f5f5;--card: #ffffff;--line: rgba(0, 0, 0, .1);--muted: #737373;--brand-dark: #171717;--shadow: none;--shadow-elevated: 0 20px 60px rgba(0, 0, 0, .25);--radius: 0px;--radius-tile: 8px;--radius-chip: 999px;--maxw: 760px;--maxw-desktop: 1400px;--font-heading: "Montserrat", "Segoe UI", system-ui, sans-serif;--font-body: "Inter", system-ui, sans-serif;--success-bg: color-mix(in srgb, var(--green) 12%, #fff);--success-border: color-mix(in srgb, var(--green) 34%, #fff);--success-text: color-mix(in srgb, var(--green) 82%, #000);--danger-bg: color-mix(in srgb, var(--red) 10%, #fff);--danger-border: color-mix(in srgb, var(--red) 32%, #fff);--danger-text: color-mix(in srgb, var(--red) 85%, #000);--warning-bg: color-mix(in srgb, var(--amber) 18%, #fff);--warning-border: color-mix(in srgb, var(--amber) 50%, #fff);--warning-text: color-mix(in srgb, var(--amber) 62%, #000);--dirty-bg: color-mix(in srgb, var(--amber) 6%, #fff)}.eyebrow,.h1,.s-title,.sub-title,.obra-name,.titulo-name,.comp-subtitulo,.rep-historial-title,.stat-l,.kpi-label,.comp-kpi-label,.gm-card-title,.login-titulo,.modal-title,.cap-nombre,.rep-rango-label,.grupo-label,.empty-big,.btn,.btn-ghost,.btn-blue,.btn-danger,.btn-aceptar,.btn-outline,.btn-aprobar,.btn-sm,.nav-btn,.gm-card-arrow{font-family:var(--font-heading)}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%}body{background:var(--bg);font-family:Inter,system-ui,sans-serif;color:var(--ink);-webkit-font-smoothing:antialiased}#root{height:100%}input:focus,select:focus,textarea:focus,button:focus-visible{outline:2px solid var(--ink);outline-offset:1px}.app{max-width:var(--maxw);margin:0 auto;height:100vh;height:100dvh;background:var(--bg);display:flex;flex-direction:column}.body{flex:1;padding:14px 14px 92px;overflow-y:auto}.topbar-fixed{position:sticky;top:0;z-index:40}.header{position:sticky;top:0;z-index:40;background:var(--ink);color:#fff;padding:16px 20px;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;row-gap:8px}.eyebrow{font-size:10.5px;letter-spacing:1.4px;text-transform:uppercase;color:var(--amber);font-weight:700}.h1{font-size:21px;margin:2px 0 0;font-weight:800;letter-spacing:-.4px}.logo{width:38px;height:38px;border:2px solid var(--amber);border-radius:var(--radius-tile);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:14px;color:var(--amber);flex-shrink:0}.brand-logo{background:#fff;border-radius:var(--radius-tile);padding:5px 9px;display:flex;align-items:center;height:34px;flex-shrink:0}.brand-logo img{height:100%;width:auto;display:block}.obra-actual-bar{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 20px;background:var(--bg);border-bottom:1px solid var(--line);font-size:12.5px;font-weight:600}.ro-tag{font-weight:700;text-transform:uppercase;letter-spacing:.5px;font-size:10px;color:var(--amber);align-self:center}.nav{flex-shrink:0;display:flex;background:#fff;border-top:1px solid var(--line);box-shadow:none;z-index:30;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}.nav::-webkit-scrollbar{display:none}.nav-btn{position:relative;flex:1 0 auto;min-width:74px;padding:11px 2px 14px;background:none;border:none;border-top:2px solid transparent;font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);cursor:pointer;transition:color .2s}.nav-btn:after{content:"";position:absolute;bottom:2px;left:50%;transform:translate(-50%);width:0;height:2px;background:var(--ink);transition:width .25s}.nav-btn:hover:after{width:60%}.nav-btn.active{color:var(--ink);border-top-color:var(--amber)}.nav-btn.active:after{width:0}.section{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px;margin-bottom:12px;box-shadow:var(--shadow)}.s-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#555;margin-bottom:10px;display:flex;align-items:center;justify-content:space-between;gap:8px}.sub-title{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:#888;margin:14px 0 6px}.note{font-size:11.5px;color:#888;font-style:italic;line-height:1.45}.code{font-family:JetBrains Mono,monospace;font-size:11.5px;font-weight:700;color:var(--blue)}.obra-head{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px;margin-bottom:12px;box-shadow:var(--shadow)}.obra-name{font-size:17px;font-weight:800;letter-spacing:-.3px}.obra-sub{font-size:12px;color:var(--muted);margin-top:2px}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px;margin-top:12px}.stat{background:#eee;border-radius:var(--radius);padding:9px 10px}.stat-v{font-size:18px;font-weight:800}.stat-l{font-size:9.5px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);font-weight:700;margin-top:2px}.titulo-group{margin-bottom:6px}.titulo-head{display:flex;align-items:center;gap:8px;padding:8px 4px;border-bottom:2px solid var(--line);margin-bottom:4px}.titulo-name{font-size:13px;font-weight:800;color:var(--blue);text-transform:uppercase;letter-spacing:.3px}.titulo-actions{margin-left:auto;display:flex;gap:4px}.partida-row{display:flex;align-items:center;gap:10px;padding:10px 4px;border-top:1px solid var(--line)}.partida-main{flex:1;min-width:0}.partida-desc{font-size:14px;font-weight:600;margin-top:2px}.partida-meta{display:flex;flex-wrap:wrap;gap:10px;font-size:12px;color:#555;margin-top:4px}.partida-meta b{color:var(--ink)}.partida-dur{color:var(--green);font-weight:800}.partida-actions{display:flex;gap:4px;flex-shrink:0}.pz-row{display:grid;grid-template-columns:54px minmax(0,1fr) auto;grid-template-areas:"code desc act" "meta meta act";gap:3px 8px;align-items:center;padding:6px 2px;border-top:1px solid var(--line)}.pz-row.pz-dirty{background:var(--dirty-bg);box-shadow:inset 3px 0 0 var(--amber);border-radius:var(--radius)}.pz-code{grid-area:code}.pz-desc-ro,.pz-desc-wrap{grid-area:desc}.pz-desc-wrap{display:flex;align-items:center;gap:6px;min-width:0}.pz-desc-ro{font-size:13.5px;font-weight:600}.pz-meta{grid-area:meta;display:flex;flex-wrap:wrap;align-items:center;gap:2px 8px;font-size:12px;color:#555}.pz-meta-ro{gap:10px}.pz-meta-ro b{color:var(--ink)}.pz-f{display:inline-flex;align-items:center;gap:1px}.pz-pre,.pz-u{color:var(--muted);font-size:11px}.pz-calc{color:var(--muted);font-size:11.5px;margin-left:auto;white-space:nowrap}.pz-dur{color:var(--green);font-weight:800}.pz-tag{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.3px;padding:1px 5px;border-radius:var(--radius-chip);background:var(--success-bg);color:var(--green);flex-shrink:0}.pz-tag-red{background:var(--danger-bg);color:var(--red)}.pz-actions{grid-area:act;display:flex;align-items:center;gap:4px;flex-shrink:0}.pz-reorder{display:flex;gap:3px}.pz-rowerr{grid-column:1 / -1;color:var(--red);font-size:11px;font-weight:600;padding:2px 0 0 56px}.cell{width:100%;min-width:0;border:1px solid transparent;background:transparent;border-radius:var(--radius);padding:5px 6px;font-family:inherit;font-size:13px;color:var(--ink)}.cell:hover:not(:disabled){background:#f0f0f0}.cell:focus{background:#fff;border-color:var(--amber);outline:none}.cell:disabled{color:var(--muted);cursor:not-allowed}.cell.num{text-align:right;font-variant-numeric:tabular-nums}.cell.mono{font-family:JetBrains Mono,monospace;font-size:11.5px;font-weight:700;color:var(--blue)}.cell.cell-err{border-color:var(--red);background:var(--danger-bg)}.cell.pz-desc{font-size:13.5px;font-weight:600}.w-cod{width:64px}.w-met{width:58px}.w-uni{width:60px}.w-pre{width:110px}.w-ren{width:46px}.w-fec{width:128px}.btn-aceptar{background:var(--green);color:#fff;border:none;border-radius:var(--radius-tile);min-width:30px;height:30px;padding:0 8px;font-size:15px;font-weight:800;cursor:pointer;font-family:inherit}.btn-aceptar:disabled{opacity:.6;cursor:default}.mini-btn{background:#ececec;border:none;border-radius:var(--radius-tile);width:26px;height:26px;font-size:13px;cursor:pointer;color:#777;display:inline-flex;align-items:center;justify-content:center}.mini-btn:hover:not(:disabled){background:#dcdcdc}.mini-btn:disabled{opacity:.3;cursor:not-allowed}.mini-btn.danger{color:var(--red)}.btn{padding:11px 14px;background:var(--ink);color:#fff;border:1px solid var(--ink);border-radius:var(--radius);font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;cursor:pointer;transition:background .25s,color .25s}.btn:hover:not(:disabled){background:#fff;color:var(--ink)}.btn.block{width:100%;margin-top:12px}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-ghost,.btn-blue,.btn-danger{padding:11px 14px;border-radius:var(--radius);font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;cursor:pointer;transition:background .25s,color .25s,border-color .25s}.btn-ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}.btn-ghost:hover:not(:disabled){background:var(--ink);color:#fff;border-color:var(--ink)}.btn-blue{background:var(--blue);color:#fff;border:1px solid var(--blue)}.btn-danger{background:transparent;color:var(--red);border:1.5px solid var(--red)}.btn-danger:hover:not(:disabled){background:var(--red);color:#fff}.icon-btn{background:#ececec;border:none;border-radius:var(--radius-tile);width:32px;height:32px;font-size:15px;cursor:pointer;color:#555;display:inline-flex;align-items:center;justify-content:center}.icon-btn:disabled{opacity:.35;cursor:not-allowed}.icon-btn.danger{color:var(--red)}.btn-row{display:flex;gap:9px;margin-top:6px}.btn-row .btn,.btn-row .btn-ghost{flex:1;text-align:center}.field{margin-bottom:2px}.lbl{display:block;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:#555;margin:10px 0 5px}.input,.select,.textarea{width:100%;padding:11px;font-size:15px;border:1.5px solid var(--line);border-radius:var(--radius);font-family:inherit;background:#fff;color:var(--ink)}.textarea{min-height:120px;resize:vertical;font-family:JetBrains Mono,monospace;font-size:12.5px;line-height:1.5}.hint{font-size:11px;color:#999;margin-top:4px}.calc-box{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}.calc{background:var(--success-bg);border:1px solid var(--success-border);border-radius:var(--radius);padding:9px 10px}.calc-v{font-size:16px;font-weight:800;color:var(--green)}.calc-l{font-size:9.5px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);font-weight:700;margin-top:2px}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:10px}.err{position:fixed;top:14px;left:50%;transform:translate(-50%);z-index:4000;width:calc(100% - 32px);max-width:640px;background:var(--danger-bg);color:var(--red);font-size:12.5px;font-weight:600;padding:8px 10px;border-left:4px solid var(--red);border-radius:0;margin-top:0}.ok-msg{background:var(--success-bg);color:var(--green);font-size:12.5px;font-weight:600;padding:8px 10px;border-left:4px solid var(--green);border-radius:0;margin-top:7px}.g-legend{display:flex;gap:14px;font-size:11px;color:#666;margin-bottom:10px;flex-wrap:wrap}.g-legend span{display:inline-flex;align-items:center;gap:5px}.g-swatch{width:14px;height:8px;border-radius:2px;display:inline-block}.g-row{display:flex;align-items:center;gap:8px;margin-bottom:7px}.g-lbl{width:116px;flex-shrink:0;overflow:hidden}.g-lbl .code{font-size:10px}.g-lbl-desc{font-size:10.5px;color:#555;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.g-track{flex:1;position:relative;height:22px;background:#ececec;border-radius:4px;overflow:hidden}.g-bar{position:absolute;top:0;height:100%;background:var(--blue);border-radius:4px;min-width:3px}.g-today{position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--amber);z-index:5}.g-today-lbl{position:absolute;top:-2px;transform:translate(-50%);font-size:9px;font-weight:800;color:var(--amber);background:var(--ink);padding:1px 4px;border-radius:3px;white-space:nowrap;z-index:6}.g-scale{display:flex;justify-content:space-between;font-size:9.5px;color:#999;margin:4px 0 0 124px}.imp-table{width:100%;border-collapse:collapse;font-size:12px;margin-top:10px}.imp-table th,.imp-table td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--line);vertical-align:top}.imp-table th{font-size:10px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted)}.imp-row-bad{background:var(--danger-bg)}.sab-grupo td{background:#eee;border-bottom:2px solid var(--line);padding-top:9px;padding-bottom:7px}.sab-grupo .titulo-name{font-size:12.5px}.sab-dirty td{background:var(--dirty-bg)}.sab-dirty td:first-child{box-shadow:inset 3px 0 0 var(--amber)}.imp-table .cell{font-size:12.5px;padding:4px 6px}.imp-table .pz-desc{min-width:160px}.cron-table td,.cron-table th{vertical-align:middle}.cron-gantt{width:300px;min-width:300px}.cron-gantt-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.cron-scale{font-size:9.5px;color:#999;font-weight:600;white-space:nowrap}.cpm-critica td{background:var(--danger-bg)}.cpm-critica td:first-child{box-shadow:inset 3px 0 0 var(--red)}.w-cuad{width:44px;text-align:center}.g-timeline{display:flex;align-items:flex-end;gap:8px;margin-bottom:8px}.g-axis{flex:1;position:relative;height:26px;border-bottom:1px solid var(--line)}.g-tick{position:absolute;bottom:3px;transform:translate(-50%);font-size:9px;color:#888;font-weight:600;white-space:nowrap}.g-tick:after{content:"";position:absolute;left:50%;bottom:-4px;width:1px;height:4px;background:var(--line)}.g-today-line{position:absolute;top:0;bottom:-4px;width:2px;background:var(--amber);z-index:2}.g-hoy-lbl{position:absolute;top:-2px;transform:translate(-50%);font-size:9px;font-weight:800;color:var(--amber);background:var(--ink);padding:1px 4px;border-radius:3px;white-space:nowrap;z-index:3}.imp-row-ok td:first-child{border-left:3px solid var(--green)}.imp-row-bad td:first-child{border-left:3px solid var(--red)}.imp-err{color:var(--red);font-size:11px}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:flex-start;justify-content:center;padding:24px 14px;overflow-y:auto;z-index:50}.modal{background:#fff;border-radius:var(--radius);width:100%;max-width:480px;padding:18px;box-shadow:var(--shadow-elevated)}.modal-title{font-size:16px;font-weight:800;margin:0 0 4px}.modal-close{background:none;border:none;font-size:20px;color:#999;cursor:pointer;line-height:1}.modal-head{display:flex;justify-content:space-between;align-items:flex-start}.empty{text-align:center;padding:32px 16px;color:var(--muted)}.empty-big{font-size:15px;font-weight:700;color:#555;margin-bottom:6px}.pill{display:inline-block;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:2px 7px;border-radius:var(--radius-chip);background:var(--success-bg);color:var(--success-text)}.pill.local{background:var(--warning-bg);color:var(--warning-text)}.row-between{display:flex;align-items:center;justify-content:space-between;gap:10px}.tabs{display:flex;gap:6px;margin-bottom:12px}.tab{flex:1;padding:9px;border:none;background:#e5e5e5;color:#6a665c;border-radius:8px;font-size:12.5px;font-weight:700;cursor:pointer;font-family:inherit}.tab.active{background:var(--ink);color:#fff}.rep-cabecera{display:flex;align-items:center;gap:12px;margin-bottom:10px;flex-wrap:wrap}.rep-fecha-nav{display:flex;align-items:center;gap:8px}.rep-fecha-label{font-size:15px;font-weight:700;min-width:120px;text-align:center}.rep-hoy-badge{margin-left:6px;background:var(--amber);color:var(--ink);font-size:10px;font-weight:800;padding:1px 5px;border-radius:var(--radius-chip);vertical-align:middle;text-transform:uppercase}.rep-clima-sel{border:1px solid var(--line);border-radius:var(--radius);padding:5px 8px;font-size:13px;background:var(--card);font-family:inherit;color:var(--ink)}.rep-obs{width:100%;border:1px solid var(--line);border-radius:var(--radius);padding:7px 10px;font-size:13px;font-family:inherit;color:var(--ink);background:var(--card);resize:vertical;margin-bottom:12px}.rep-obs:focus{outline:2px solid var(--amber)}.rep-tabla{width:100%;border-collapse:collapse;font-size:13px;margin-bottom:12px}.rep-tabla th{background:var(--blue);color:#fff;padding:6px 8px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;text-align:left;position:sticky;top:0}.rep-tabla th.rep-acum,.rep-tabla th.rep-pct,.rep-tabla th.rep-hoy{text-align:right}.rep-grupo-fila td.rep-grupo-titulo{background:#eee;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;padding:5px 8px;color:var(--muted);border-top:1px solid var(--line)}.rep-fila td{padding:5px 8px;border-bottom:1px solid var(--line);vertical-align:middle}.rep-fila:last-child td{border-bottom:none}.rep-fila:hover td{background:#f2f2f2}.rep-cod{width:72px;font-family:monospace;font-size:12px;color:var(--muted)}.rep-uni{width:48px;color:var(--muted);font-size:12px}.rep-acum{width:90px;text-align:right;font-variant-numeric:tabular-nums}.rep-pct{width:80px;text-align:right}.rep-hoy{width:88px;text-align:right;cursor:text}.rep-vunit{width:100px;text-align:right;color:var(--muted);font-size:12px}.rep-vhoy{width:110px;text-align:right;font-weight:600;color:var(--ink)}.rep-tabla th.rep-vunit,.rep-tabla th.rep-vhoy{text-align:right}.rep-pct-bar{display:inline-block;font-size:12px;font-weight:700;color:var(--green);background:linear-gradient(to right,rgba(27,122,61,.15) calc(var(--pct) * 100%),transparent calc(var(--pct) * 100%));border-radius:var(--radius);padding:1px 5px}.rep-hoy-val{display:inline-block;min-width:56px;text-align:right;border:1px dashed var(--line);border-radius:var(--radius);padding:2px 6px;font-size:13px;cursor:text;color:var(--muted);transition:border-color .15s}.rep-hoy-val:hover{border-color:var(--amber)}.rep-hoy-val.rep-hoy-activo{color:var(--ink);font-weight:700;border-style:solid;border-color:var(--green)}.rep-hoy-placeholder{color:var(--line);font-size:16px;line-height:1}.rep-hoy-input{width:80px;text-align:right;border:2px solid var(--amber);border-radius:var(--radius);padding:2px 6px;font-size:13px;font-family:inherit;background:var(--card)}.rep-footer{display:flex;align-items:center;justify-content:flex-end;gap:12px;margin-top:14px;margin-bottom:18px;flex-wrap:wrap}.rep-msg-ok{font-size:12px;color:var(--green);font-weight:600}.rep-msg-err{font-size:12px;color:var(--red);font-weight:600}.rep-historial{margin-top:20px;border-top:1px solid var(--line);padding-top:14px}.rep-historial-title{font-size:13px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:0 0 8px}.rep-historial-lista{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.rep-hist-item{display:flex;align-items:center;gap:6px}.rep-hist-btn{flex:1;display:flex;align-items:center;gap:10px;background:none;border:1px solid var(--line);border-radius:var(--radius);padding:6px 10px;cursor:pointer;font-family:inherit;font-size:13px;color:var(--ink);text-align:left}.rep-hist-btn:hover{background:#eee}.rep-hist-item.rep-hist-activo .rep-hist-btn{border-color:var(--amber);background:var(--dirty-bg);font-weight:700}.rep-hist-fecha{font-weight:600}.rep-hist-clima{color:var(--muted);font-size:12px}.rep-hist-del{color:var(--red);padding:4px 6px;font-size:12px}.rep-hist-estado{font-size:10px;font-weight:700;padding:1px 6px;border-radius:var(--radius-chip);margin-left:auto}.rep-estado-badge{font-size:11px;font-weight:700;padding:2px 8px;border-radius:var(--radius-chip)}.rep-estado-borrador{background:var(--warning-bg);color:var(--warning-text);border:1px solid var(--warning-border)}.rep-estado-aprobado{background:var(--success-bg);color:var(--success-text);border:1px solid var(--success-border)}.rep-hist-estado.rep-estado-borrador{background:var(--warning-bg);color:var(--warning-text)}.rep-hist-estado.rep-estado-aprobado{background:var(--success-bg);color:var(--success-text)}.rep-cabecera-right{display:flex;align-items:center;gap:8px;margin-left:auto}.rep-btn-dl{font-size:12px}.rep-aprobado-info{background:var(--success-bg);border:1px solid var(--success-border);color:var(--success-text);border-radius:var(--radius);padding:6px 12px;font-size:12px;margin-bottom:10px}.btn-aprobar{background:var(--green);color:#fff;border:none;border-radius:var(--radius);padding:7px 16px;font-size:13px;font-weight:700;cursor:pointer;font-family:inherit}.btn-aprobar:hover{opacity:.88}.rep-footer-btns{display:flex;gap:8px;align-items:center}.rep-rango{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px;padding:8px 10px;background:#f0f0f0;border:1px solid var(--line);border-radius:var(--radius)}.rep-rango-label{font-size:11.5px;font-weight:700;color:var(--muted);white-space:nowrap}.rep-rango-input{border:1px solid var(--line);border-radius:var(--radius);padding:4px 7px;font-size:12.5px;font-family:inherit;background:var(--card);color:var(--ink)}.rep-rango-sep{color:var(--muted);font-size:13px}.btn-outline{background:transparent;border:1px solid var(--line);border-radius:var(--radius);padding:6px 14px;font-size:13px;font-family:inherit;cursor:pointer;color:var(--ink)}.btn-outline:hover{background:#eee}.comp-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:20px}@media (max-width: 600px){.comp-kpis{grid-template-columns:1fr 1fr}}.comp-kpi{background:#eee;border-radius:var(--radius);padding:12px 14px;border:1px solid var(--line)}.comp-kpi-label{font-size:10px;text-transform:uppercase;letter-spacing:.05em;font-weight:700;color:var(--muted);margin-bottom:4px}.comp-kpi-valor{font-size:16px;font-weight:800;color:var(--ink);white-space:nowrap}.comp-kpi-pct{font-size:11px;font-weight:700;color:var(--muted);margin-top:2px}.comp-kpi-semaforo.comp-ok{border-color:var(--success-border);background:var(--success-bg)}.comp-kpi-semaforo.comp-warn{border-color:var(--warning-border);background:var(--warning-bg)}.comp-kpi-semaforo.comp-crit{border-color:var(--danger-border);background:var(--danger-bg)}.comp-kpi-semaforo.comp-ok .comp-kpi-valor{color:var(--success-text)}.comp-kpi-semaforo.comp-warn .comp-kpi-valor{color:var(--warning-text)}.comp-kpi-semaforo.comp-crit .comp-kpi-valor{color:var(--danger-text)}.comp-subtitulo{font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 10px}.comp-tabla{width:100%;border-collapse:collapse;font-size:12.5px}.comp-tabla th{background:var(--blue);color:#fff;padding:6px 8px;font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;text-align:left;white-space:nowrap}.comp-tabla td{padding:5px 8px;border-bottom:1px solid var(--line);vertical-align:middle}.comp-tabla tbody tr:hover td{background:#f2f2f2}.comp-num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.comp-cod{width:60px;font-family:monospace;font-size:11px;color:var(--muted)}.comp-desc-cell{min-width:140px;font-size:12px}.comp-grupo-fila td.comp-grupo-titulo{background:#eee;font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:5px 8px;border-top:1px solid var(--line)}.comp-delta{font-weight:700;font-size:11.5px}.comp-ok{color:var(--success-text)}.comp-warn{color:var(--warning-text)}.comp-crit{color:var(--danger-text)}.comp-barra{width:90px;padding:4px 8px!important}.comp-barra-wrap{position:relative;height:14px;background:#ece9e1;border-radius:4px;overflow:hidden}.comp-barra-prog{position:absolute;top:2px;bottom:2px;left:0;background:var(--blue);opacity:.35;border-radius:2px;transition:width .2s}.comp-barra-ejec{position:absolute;top:0;bottom:0;left:0;background:var(--green);opacity:.7;border-radius:4px;transition:width .2s}.comp-flujo tfoot td{font-size:12.5px;border-top:2px solid var(--line);padding-top:8px}.comp-flujo-futuro td{color:var(--muted)}.comp-ejec-cell{font-weight:600}.rc-tabla{border-collapse:collapse;font-size:13px}.rc-fila td{padding:3px 10px}.rc-label{text-align:right;min-width:200px}.rc-valor{text-align:right;min-width:130px;white-space:nowrap}.rc-fila:last-child .rc-label,.rc-fila:last-child .rc-valor{border-top:1px solid var(--line);padding-top:6px;margin-top:2px}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg);padding:24px}.login-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:36px 28px;width:100%;max-width:400px;text-align:center;position:relative;overflow:hidden}.login-card:before{content:"";position:absolute;top:0;left:0;width:100%;height:4px;background:var(--ink)}.login-logo{display:block;height:48px;width:auto;margin:0 auto 16px}.login-titulo{font-size:20px;font-weight:700;letter-spacing:.02em;margin:0 0 4px}.login-sub{color:var(--muted);font-size:13px;margin:0 0 24px}.login-lista{display:flex;flex-direction:column;gap:8px;margin-bottom:20px}.login-usuario-btn{display:flex;align-items:center;gap:12px;background:var(--bg);border:1.5px solid var(--line);border-radius:var(--radius);padding:10px 14px;cursor:pointer;text-align:left;transition:border-color .15s}.login-usuario-btn:hover{border-color:var(--ink)}.login-usuario-btn.activo{border-color:var(--ink);background:#f5f5f5}.login-avatar{width:36px;height:36px;border-radius:50%;background:var(--ink);color:#fff;font-size:15px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}.login-nombre{font-weight:600;font-size:14px;flex:1}.login-rol{font-size:12px;color:var(--muted)}.login-pin-wrap{border-top:1px solid var(--line);padding-top:20px;text-align:left}.login-pin-wrap .input{border:none;border-bottom:1px solid rgba(0,0,0,.2);border-radius:0;padding:8px 2px;background:transparent}.login-pin-wrap .input:focus{border-bottom-color:var(--ink);outline:none}.login-pin-label{font-size:12px;font-weight:600;color:var(--muted);display:block;margin-bottom:6px}.login-pin-input{width:100%;box-sizing:border-box;font-size:22px;letter-spacing:6px;text-align:center;border:none;border-bottom:1px solid rgba(0,0,0,.2);border-radius:0;padding:10px;outline:none;background:transparent}.login-pin-input:focus{border-bottom-color:var(--ink)}.login-pin-error{border-color:var(--red)!important}.login-pin-msg{color:var(--red);font-size:12px;margin:6px 0 0}.login-recuperar-btn{background:none;border:none;color:var(--muted);font-size:12px;margin-top:20px;cursor:pointer;text-decoration:underline}.login-recuperar-btn:hover{color:var(--ink)}.campo-password-wrap{position:relative}.campo-password-wrap .input{padding-right:40px}.campo-password-toggle{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;font-size:16px;padding:4px 6px;line-height:1;color:var(--muted)}.campo-password-toggle:hover{color:var(--ink)}.rec-wrap{text-align:left}.rec-titulo{font-size:16px;font-weight:700;margin:0 0 8px}.rec-texto{font-size:13.5px;color:var(--ink);margin:0;line-height:1.5}.logout-btn{font-size:12px;border:1px solid rgba(255,255,255,.3);border-radius:4px;padding:3px 10px;background:transparent;cursor:pointer;color:#fff}.logout-btn:hover{background:#ffffff26}.usuarios-wrap{padding:4px 0 32px}.usuarios-lista-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.usuarios-lista{display:flex;flex-direction:column;gap:6px;margin-bottom:24px}.usuario-item{display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px}.permisos-tabla-wrap{overflow-x:auto;margin-bottom:20px;border:1px solid var(--line)}.permisos-tabla-cols{width:100%;min-width:620px;border-collapse:collapse}.permisos-tabla-cols th{background:var(--ink);color:#fff;padding:8px 10px;font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;text-align:left;white-space:nowrap}.permisos-tabla-cols th.permisos-th-rol{text-align:center}.permisos-tabla-cols td{padding:6px 8px;border-top:1px solid var(--line);vertical-align:middle}.permisos-tabla-cols td.permisos-td-mod{font-size:12.5px;font-weight:600;white-space:nowrap}.permiso-celda{display:flex;justify-content:center;gap:8px}.permiso-celda label{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:9px;font-weight:700;color:var(--muted);text-transform:uppercase;cursor:pointer}.permiso-celda input[type=checkbox]{width:15px;height:15px;cursor:pointer}.permisos-gm-titulo{font-size:15px;margin-bottom:12px}.ued-wrap{background:var(--card);border:1.5px solid var(--amber);border-radius:var(--radius);padding:20px;margin-bottom:20px}.ued-titulo{font-size:14px;font-weight:700;margin:0 0 16px}.ued-campo{margin-bottom:14px}.ued-campo label{display:block;font-size:12px;font-weight:600;color:var(--muted);margin-bottom:5px}.ued-obras{display:flex;flex-direction:column;gap:6px;background:var(--bg);border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px}.ued-obra-item{display:flex;align-items:center;gap:8px;font-size:13.5px;cursor:pointer}.ued-acciones{display:flex;gap:8px;margin-top:16px}.input-err{border-color:var(--red)!important}.campo-err{color:var(--red);font-size:12px;margin-top:3px;display:block}.btn-sm{font-size:12px;padding:5px 12px;border-radius:var(--radius);border:1px solid var(--line);background:var(--card);color:var(--ink);cursor:pointer;font-weight:600}.btn-sm:hover{background:var(--line)}.btn-sm.btn-primary{background:var(--ink);color:#fff;border-color:var(--ink)}.btn-sm.btn-primary:hover{opacity:.88}.subtab-bar{display:flex;gap:4px;border-bottom:2px solid var(--amber);padding-bottom:4px;overflow-x:auto;-webkit-overflow-scrolling:touch}.subtab-bar::-webkit-scrollbar{display:none}.subtab-btn{background:none;border:2px solid transparent;border-bottom-width:4px;margin-bottom:-4px;padding:7px 14px;font-size:13px;font-weight:600;cursor:pointer;color:var(--muted);font-family:inherit;border-radius:6px 6px 0 0;transition:color .15s,background .15s,border-color .15s}.subtab-btn:hover{color:var(--ink);background:#eee}.subtab-btn.active{color:var(--ink);background:var(--bg);border-color:var(--amber);border-bottom-color:var(--bg)}.card .subtab-btn.active{background:var(--card);border-bottom-color:var(--card)}.alm-card{border:1px solid var(--line);border-radius:var(--radius);background:var(--card)}.alm-fecha{font-weight:700;font-size:13px}.alm-ref{font-size:13px;color:var(--muted)}.alm-vale-num{font-size:13px;font-weight:800;color:var(--blue)}.grupo-label{font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);padding:4px 0 2px;margin-top:10px}.badge-stock-bajo{color:var(--amber)}.link-btn{background:none;border:none;padding:0;cursor:pointer;color:var(--blue);font-size:13px;font-weight:600;text-decoration:underline;font-family:inherit}.link-btn:hover{opacity:.75}.alm-tipo-badge{display:inline-block;font-size:10px;font-weight:700;padding:1px 6px;border-radius:var(--radius-chip);text-transform:uppercase;letter-spacing:.04em}.alm-tipo-entrada{background:var(--success-bg);color:var(--success-text)}.alm-tipo-vale{background:var(--danger-bg);color:var(--danger-text)}.section-header{display:flex;flex-direction:column;gap:2px}.ins-codigo{font-family:monospace;font-size:11.5px;font-weight:700;color:var(--blue);background:#eef3f8;padding:1px 6px;border-radius:4px;letter-spacing:.04em}.ins-codigo-input{font-family:monospace;font-size:12px;letter-spacing:.04em;text-transform:uppercase}.estado-badge{display:inline-block;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:1px 7px;border-radius:var(--radius-chip);vertical-align:middle}.estado-pendiente{background:var(--warning-bg);color:var(--warning-text);border:1px solid var(--warning-border)}.estado-aprobado{background:var(--success-bg);color:var(--success-text);border:1px solid var(--success-border)}.estado-anulado{background:var(--red);color:#fff;border:1px solid var(--red)}.panel-alerta{background:var(--warning-bg);border:1px solid var(--warning-border);border-radius:var(--radius);padding:14px}.panel-ok{background:var(--success-bg);border:1px solid var(--success-border);border-radius:var(--radius);padding:14px}.stat-desfase{position:relative;cursor:default;border:1.5px solid transparent;transition:box-shadow .15s}.stat-desfase:hover{box-shadow:0 2px 10px #00000021}.stat-desfase-ok{background:var(--success-bg);border-color:var(--success-border)}.stat-desfase-ok .stat-v{color:var(--success-text)}.stat-desfase-ok .stat-l{color:var(--success-text);opacity:.75}.stat-desfase-advertencia{background:var(--warning-bg);border-color:var(--warning-border)}.stat-desfase-advertencia .stat-v{color:var(--warning-text)}.stat-desfase-advertencia .stat-l{color:var(--warning-text);opacity:.75}.stat-desfase-critico{background:var(--danger-bg);border-color:var(--danger-border)}.stat-desfase-critico .stat-v{color:var(--danger-text)}.stat-desfase-critico .stat-l{color:var(--danger-text);opacity:.75}.stat-desfase:after{content:attr(data-tip);white-space:pre;position:absolute;bottom:calc(100% + 10px);left:50%;transform:translate(-50%) translateY(4px);background:#1e2535;color:#f1f5f9;font-size:11.5px;font-weight:400;line-height:1.65;padding:9px 13px;border-radius:8px;box-shadow:0 4px 16px #00000038;pointer-events:none;opacity:0;transition:opacity .18s ease,transform .18s ease;z-index:100;min-width:260px}.stat-desfase:before{content:"";position:absolute;bottom:calc(100% + 4px);left:50%;transform:translate(-50%) translateY(4px);border:6px solid transparent;border-top-color:#1e2535;pointer-events:none;opacity:0;transition:opacity .18s ease,transform .18s ease;z-index:100}.stat-desfase:hover:after,.stat-desfase:hover:before{opacity:1;transform:translate(-50%) translateY(0)}.rent-verde{color:var(--green);font-weight:600}.rent-amarillo{color:var(--warning-text);font-weight:600}.rent-rojo{color:var(--red);font-weight:600}.rent-table td,.rent-table th{font-size:12px}.gm-shell{max-width:var(--maxw);margin:0 auto;min-height:100vh;background:var(--bg);display:flex;flex-direction:column}.gm-header{position:sticky;top:0;z-index:40;background:var(--ink);color:#fff;padding:16px 20px;display:flex;justify-content:space-between;align-items:center;gap:12px}.gm-header-right{display:flex;align-items:center;gap:10px}.gm-user{font-size:13px;color:#ffffffbf}.gm-body{flex:1;padding:24px 16px 40px}.gm-greeting{font-size:14px;color:var(--muted);margin:0 0 20px;line-height:1.5}.gm-grid{display:grid;grid-template-columns:1fr;gap:16px}@media (min-width: 640px){.gm-grid{grid-template-columns:repeat(3,1fr)}}.gm-card{display:flex;flex-direction:column;align-items:center;gap:8px;background:var(--card);border:2px solid var(--line);border-radius:var(--radius);padding:32px 20px;text-align:center;cursor:pointer;transition:border-color .15s,box-shadow .15s,transform .1s,background .15s;box-shadow:var(--shadow);position:relative;overflow:hidden}.gm-card:hover{border-color:var(--gm-color, var(--amber));background:color-mix(in srgb,var(--gm-color, var(--amber)) 6%,var(--card));box-shadow:0 6px 20px #0000001f;transform:translateY(-2px)}.gm-card:active{transform:translateY(0)}.gm-card-icon{width:64px;height:64px;border-radius:var(--radius-tile);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:20px;color:#fff;margin-bottom:6px;flex-shrink:0}.gm-card-title{font-size:20px;font-weight:800;letter-spacing:-.3px}.gm-card-desc{font-size:13px;color:var(--muted);line-height:1.5}.gm-card-arrow{font-size:13px;font-weight:700;color:var(--gm-color, var(--amber));margin-top:8px;padding-top:8px;border-top:1px solid var(--line);width:100%}.gm-back-btn{background:#ffffff1f;color:#fff;border:1px solid rgba(255,255,255,.2);border-radius:var(--radius);padding:6px 12px;font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap;flex-shrink:0;transition:background .15s}.gm-back-btn:hover{background:#fff3}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px;margin-bottom:0;box-shadow:var(--shadow)}.kpi-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:8px}.kpi-card{background:#eee;border-radius:var(--radius);padding:10px 12px}.kpi-label{font-size:9.5px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);font-weight:700;margin-bottom:3px}.kpi-value{font-size:20px;font-weight:800}.badge{display:inline-block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;padding:2px 8px;border-radius:var(--radius-chip);background:var(--success-bg);color:var(--success-text)}.input-sm{padding:5px 7px;font-size:13px;border:1.5px solid var(--line);border-radius:var(--radius);font-family:inherit;background:#fff;color:var(--ink)}.input-sm:focus{outline:2px solid var(--amber);outline-offset:1px}.subtab{background:none;border:2px solid transparent;border-bottom-width:4px;margin-bottom:-4px;padding:8px 16px;font-size:13px;font-weight:600;cursor:pointer;color:var(--muted);font-family:inherit;border-radius:6px 6px 0 0;transition:color .15s,background .15s,border-color .15s;flex-shrink:0;white-space:nowrap}.subtab:hover{color:var(--ink);background:#eee}.subtab.active{color:var(--ink);background:var(--bg);border-color:var(--amber);border-bottom-color:var(--bg)}.card .subtab.active{background:var(--card);border-bottom-color:var(--card)}.form-label{display:flex;flex-direction:column;gap:4px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--muted)}.presupuesto-item{padding:14px;transition:box-shadow .15s}.presupuesto-item:hover{box-shadow:0 4px 12px #0000001a}.cap-bloque{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}.cap-header{display:flex;align-items:center;gap:8px;padding:12px 14px;background:var(--ink);color:#fff;cursor:pointer;-webkit-user-select:none;user-select:none}.cap-chevron{font-size:12px;flex-shrink:0}.cap-nombre{flex:1;font-weight:700;font-size:14px;cursor:text}.cap-body{padding:10px 14px 14px}.fila-hover:hover td{background:#f7f5f0}.fila-edit td{background:var(--dirty-bg);border-bottom:2px solid var(--amber)}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media (max-width: 480px){.form-grid{grid-template-columns:1fr}.gm-grid{gap:12px}}@media (min-width: 901px){.app,.gm-shell{max-width:var(--maxw-desktop)}}
