:root{--emerald-50:#ecfdf5;--emerald-100:#d1fae5;--emerald-200:#a7f3d0;--emerald-300:#6ee7b7;--emerald-400:#34d399;--emerald-500:#10b981;--emerald-600:#059669;--emerald-700:#047857;--emerald-800:#065f46;--emerald-900:#064e3b;--sidebar-width:260px;--header-height:64px}*{box-sizing:border-box}html,body,#root{height:100%}body{color:var(--emerald-900);background-color:#fff;margin:0;font-family:Segoe UI,system-ui,-apple-system,sans-serif;overflow-x:hidden}a{color:inherit;text-decoration:none}.app-header{top:0;left:var(--sidebar-width);height:var(--header-height);border-bottom:1px solid var(--emerald-100);z-index:100;background-color:#fff;justify-content:center;align-items:center;gap:16px;padding:0 32px;display:flex;position:fixed;right:0;box-shadow:0 2px 16px -6px #065f4626}.app-header:before{content:"";background:linear-gradient(90deg, var(--emerald-300), var(--emerald-600), var(--emerald-300));height:3px;position:absolute;top:0;left:0;right:0}.app-header-info{text-align:center;flex-direction:column;align-items:center;gap:2px;min-width:0;display:flex}.app-header-title{color:var(--emerald-800);white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:18px;font-weight:700;overflow:hidden}.app-header-menu-button{border:1px solid var(--emerald-100);background-color:var(--emerald-50);width:36px;height:36px;color:var(--emerald-700);cursor:pointer;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;transition:background-color .15s;display:none}.app-header-menu-button:hover{background-color:var(--emerald-100)}@media (max-width:860px){.app-header{justify-content:flex-start;gap:12px;padding:0 16px;left:0}.app-header-menu-button{display:flex}.app-header-info{text-align:left;align-items:flex-start}.app-header-title{font-size:15px}}@media (max-width:420px){.app-header{padding:0 12px}.app-header-title{font-size:14px}}@keyframes status-pulse{0%{box-shadow:0 0 #10b98180}70%{box-shadow:0 0 0 6px #10b98100}to{box-shadow:0 0 #10b98100}}.sidebar{width:var(--sidebar-width);min-width:var(--sidebar-width);background:linear-gradient(180deg, var(--emerald-700) 0%, var(--emerald-900) 100%);z-index:200;flex-direction:column;height:100vh;padding:24px 16px;transition:transform .25s;display:flex;position:fixed;top:0;left:0;overflow-y:auto;box-shadow:6px 0 24px -8px #064e3b59}.sidebar-close{display:none}.sidebar::-webkit-scrollbar{width:6px}.sidebar::-webkit-scrollbar-thumb{background-color:#ffffff2e;border-radius:999px}.sidebar-header{border-bottom:1px solid #ffffff24;align-items:center;gap:10px;margin-bottom:16px;padding:0 12px 24px;display:flex}.sidebar-logo{background-color:#fff;border-radius:12px;flex:1;justify-content:center;align-items:center;min-width:0;height:80px;padding:8px 14px;display:flex;box-shadow:0 6px 14px -4px #10b98166}.sidebar-logo-img{object-fit:contain;width:auto;max-width:100%;height:100%}.sidebar-subtitle{color:#fff;text-transform:uppercase;letter-spacing:.08em;margin:0 0 8px 4px;font-size:12px;font-weight:600}.sidebar-nav{flex-direction:column;gap:4px;display:flex}.sidebar-nav--secondary{border-top:1px solid #ffffff24;margin-top:20px;padding-top:16px}.sidebar-link{color:#fffc;border-radius:10px;align-items:center;gap:12px;padding:10px 12px;font-size:14px;font-weight:500;transition:background-color .18s,color .18s,transform .18s;display:flex}.sidebar-link:hover{color:#fff;background-color:#ffffff1a;transform:translate(3px)}.sidebar-link--active{color:var(--emerald-700);background-color:#fff;font-weight:700;box-shadow:0 8px 18px -6px #00000059}.sidebar-icon{color:#ffffffa6;flex-shrink:0;transition:color .18s}.sidebar-link:hover .sidebar-icon{color:#fff}.sidebar-link--active .sidebar-icon{color:var(--emerald-600)}.sidebar-group{flex-direction:column;display:flex}.sidebar-link--button{cursor:pointer;text-align:left;background:0 0;border:none;width:100%;font-family:inherit}.sidebar-chevron{color:#ffffff8c;flex-shrink:0;margin-left:auto;transition:transform .2s}.sidebar-link--active .sidebar-chevron{color:var(--emerald-500)}.sidebar-chevron--open{transform:rotate(180deg)}.sidebar-submenu{border-left:2px solid #ffffff29;flex-direction:column;gap:2px;margin:4px 0 4px 30px;padding-left:12px;display:flex}.sidebar-sublink{color:#ffffffb3;border-radius:8px;align-items:center;gap:8px;padding:8px 12px;font-size:13px;font-weight:500;transition:background-color .18s,color .18s,transform .18s;display:flex}.sidebar-sublink:hover{color:#fff;background-color:#ffffff1a;transform:translate(3px)}.sidebar-sublink--active{color:#fff;background-color:#ffffff29;font-weight:700}.sidebar-sub-icon{color:#ffffff8c;flex-shrink:0}.sidebar-sublink--active .sidebar-sub-icon{color:var(--emerald-300)}.sidebar-footer{flex-direction:column;gap:18px;margin-top:auto;padding-top:24px;display:flex}.sidebar-info-card{background-color:#ffffff08;border:1px solid #6ee7b759;border-radius:14px;flex-direction:column;gap:14px;padding:16px;display:flex}.sidebar-info-item{flex-direction:column;gap:3px;display:flex}.sidebar-info-label{color:var(--emerald-300);text-transform:none;font-size:11px;font-weight:600}.sidebar-info-value{color:#fff;word-break:break-word;font-size:13.5px;font-weight:700}.sidebar-brand{justify-content:center;align-items:center;padding:4px 6px 2px;display:flex}.sidebar-brand-logo{object-fit:contain;width:100%;max-width:140px;height:auto}@media (max-width:860px){.sidebar{transform:translate(-100%)}.sidebar--open{transform:translate(0)}.sidebar-close{color:#fff;cursor:pointer;background-color:#ffffff1f;border:none;border-radius:8px;justify-content:center;align-items:center;width:30px;height:30px;margin-left:auto;transition:background-color .15s;display:flex}.sidebar-close:hover{background-color:#ffffff38}}.overview-top{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px;display:flex}.hero-row{grid-template-columns:1.8fr 1.15fr 1fr 1fr;align-items:stretch;gap:20px;margin-bottom:24px;display:grid}.hero-card{border:1px solid var(--emerald-100);background-color:#fff;border-radius:18px;flex-direction:column;gap:18px;padding:28px 32px;display:flex;position:relative;overflow:hidden;box-shadow:0 10px 30px -14px #065f462e}.hero-body{z-index:1;align-items:center;gap:28px;display:flex;position:relative}.hero-card:before{content:"";background:linear-gradient(180deg, var(--emerald-300), var(--emerald-600));width:5px;position:absolute;top:0;bottom:0;left:0}.hero-card:after{content:"";background:radial-gradient(circle,#10b9811f,#0000 70%);border-radius:50%;width:240px;height:240px;position:absolute;top:-90px;right:-60px}.hero-ring{--progress:0;background:conic-gradient(var(--emerald-500) calc(var(--progress) * 1%), var(--emerald-100) 0);border-radius:50%;flex-shrink:0;width:116px;height:116px;position:relative;box-shadow:0 6px 16px -8px #065f464d}.hero-ring:before{content:"";background-color:#fff;border-radius:50%;position:absolute;top:9px;bottom:9px;left:9px;right:9px}.hero-ring-value{z-index:1;height:100%;color:var(--emerald-900);flex-direction:column;justify-content:center;align-items:center;line-height:1.1;display:flex;position:relative}.hero-ring-value span{font-size:24px;font-weight:800}.hero-ring-value small{text-transform:uppercase;letter-spacing:.08em;color:var(--emerald-500);margin-top:4px;font-size:12px;font-weight:700}.hero-info{z-index:1;flex:1;min-width:0;position:relative}.hero-label{z-index:1;color:var(--emerald-800);align-items:center;gap:10px;margin:0;font-size:19px;font-weight:700;display:flex;position:relative}.hero-label-icon{background:linear-gradient(135deg, var(--emerald-100), var(--emerald-200));width:34px;height:34px;color:var(--emerald-700);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.hero-stats{gap:40px;display:flex}.hero-stat{flex-direction:column;gap:5px;display:flex}.hero-stat-label{text-transform:uppercase;letter-spacing:.06em;color:var(--emerald-500);font-size:12px;font-weight:700}.hero-stat-value{color:var(--emerald-900);font-size:25px;font-weight:700}.hero-desv{z-index:1;gap:8px;padding:8px 16px;font-size:28px;font-weight:800;position:relative}.spi-card{border:1px solid var(--emerald-100);background-color:#fff;border-radius:18px;flex-direction:column;gap:6px;padding:22px 24px 20px;transition:transform .18s,box-shadow .18s;display:flex;position:relative;overflow:hidden;box-shadow:0 10px 30px -14px #065f4633}.spi-card:hover{transform:translateY(-3px);box-shadow:0 18px 34px -16px #065f464d}.spi-label{letter-spacing:.04em;text-transform:uppercase;color:var(--emerald-700);align-items:center;gap:7px;margin:0;font-size:14px;font-weight:800;display:flex}.spi-gauge-visual{width:100%;max-width:220px;margin:4px auto 0;position:relative}.spi-gauge-svg{width:100%;height:auto;display:block;overflow:visible}.spi-gauge-needle polygon{fill:var(--emerald-900)}.spi-gauge-needle{transition:transform .35s cubic-bezier(.34,1.56,.64,1)}.spi-gauge-pivot{fill:var(--emerald-900);stroke:#fff;stroke-width:3px}.spi-gauge-info{text-align:center;flex-direction:column;align-items:center;width:80%;display:flex;position:absolute;top:62%;left:50%;transform:translate(-50%,-50%)}.spi-gauge-info-value{margin:0;font-size:24px;font-weight:800;line-height:1}.spi-status{text-align:center;border-radius:999px;align-self:center;margin-top:6px;padding:5px 14px;font-size:12px;font-weight:800}.trend-card{border:1px solid var(--emerald-100);background-color:#fff;border-radius:18px;flex-direction:column;gap:14px;padding:22px 22px 20px;transition:transform .18s,box-shadow .18s;display:flex;position:relative;box-shadow:0 10px 30px -14px #065f4633}.trend-card:hover{transform:translateY(-3px);box-shadow:0 18px 34px -16px #065f464d}.trend-card-header{justify-content:space-between;align-items:center;gap:10px;display:flex}.trend-label{letter-spacing:.04em;text-transform:uppercase;color:var(--emerald-700);align-items:center;gap:7px;margin:0;font-size:14px;font-weight:800;display:flex}.trend-direction{border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;display:flex}.trend-direction--positive{color:var(--emerald-600);background-color:#10b98124}.trend-direction--negative{color:#b91c1c;background-color:#dc26261a}.trend-chart{margin:0 -6px}.trend-status{text-align:center;border-radius:999px;align-self:center;padding:5px 14px;font-size:12px;font-weight:800}.trend-status--positive{color:var(--emerald-700);background-color:#10b98124}.trend-status--negative{color:#b91c1c;background-color:#dc26261a}.forecast-card{border:1px solid var(--emerald-100);background-color:#fff;border-radius:18px;flex-direction:column;gap:10px;padding:22px 22px 20px;transition:transform .18s,box-shadow .18s;display:flex;position:relative;box-shadow:0 10px 30px -14px #065f4633}.forecast-card:hover{transform:translateY(-3px);box-shadow:0 18px 34px -16px #065f464d}.forecast-label{letter-spacing:.04em;text-transform:uppercase;color:var(--emerald-700);align-items:center;gap:7px;margin:0;font-size:14px;font-weight:800;display:flex}.forecast-date{text-align:center;color:var(--emerald-900);margin:6px 0 0;font-size:27px;font-weight:800}.forecast-diff{text-align:center;margin:0;font-size:12.5px;font-weight:700}.forecast-diff--positive{color:var(--emerald-600)}.forecast-diff--negative{color:#b91c1c}.forecast-diff--neutral{color:var(--emerald-400)}.forecast-status{border-radius:999px;align-self:center;margin-top:4px;padding:5px 14px;font-size:12px;font-weight:800}.forecast-status--positive{color:var(--emerald-700);background-color:#10b98124}.forecast-status--negative{color:#b91c1c;background-color:#dc26261a}.forecast-status--neutral{background-color:var(--emerald-50);color:var(--emerald-500)}.phase-grid{grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:18px;display:grid}.phase-card{border:1px solid var(--emerald-100);background-color:#fff;border-radius:16px;padding:20px;transition:transform .18s,box-shadow .18s;box-shadow:0 8px 20px -14px #065f4640}.phase-card:hover{transform:translateY(-3px);box-shadow:0 16px 28px -14px #065f4659}.phase-card-header{align-items:flex-start;gap:10px;margin-bottom:18px;display:flex}.phase-icon{background:linear-gradient(135deg, var(--emerald-100), var(--emerald-200));width:34px;height:34px;color:var(--emerald-700);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.phase-card-title{flex:1;min-width:0}.phase-name{color:var(--emerald-900);margin:0;font-size:14px;font-weight:700}.phase-weight{color:var(--emerald-500);font-size:12px;font-weight:600}.phase-progress-track{background-color:var(--emerald-50);border-radius:999px;height:8px;margin-bottom:10px;position:relative;overflow:hidden}.phase-progress-prev{background-color:var(--emerald-200);border-radius:999px;position:absolute;top:0;bottom:0;left:0;right:auto}.phase-progress-real{background:linear-gradient(90deg, var(--emerald-400), var(--emerald-600));border-radius:999px;transition:width .4s;position:absolute;top:0;bottom:0;left:0;right:auto}.phase-values{color:var(--emerald-700);justify-content:space-between;font-size:12px;display:flex}.phase-values strong{color:var(--emerald-900);font-size:13px}.phase-empty{color:var(--emerald-300);padding:10px 0 2px;font-size:13px;font-style:italic;font-weight:600}.desv-badge{white-space:nowrap;border-radius:999px;flex-shrink:0;align-items:center;gap:4px;padding:4px 9px;font-size:12px;font-weight:700;display:inline-flex}.desv-badge--positive{color:var(--emerald-700);background-color:#10b98124}.desv-badge--negative{color:#b91c1c;background-color:#dc26261a}.desv-badge--neutral{background-color:var(--emerald-50);color:var(--emerald-300)}@media (max-width:1200px){.hero-row{grid-template-columns:repeat(3,1fr)}.hero-card{grid-column:1/-1}}@media (max-width:860px){.overview-top{flex-wrap:wrap}.hero-row{grid-template-columns:1fr}.hero-card{text-align:center;grid-column:auto;gap:20px;padding:24px}.hero-body{flex-wrap:wrap;justify-content:center}.hero-info{flex-basis:100%}.hero-label,.hero-stats{justify-content:center}.hero-stat{align-items:center}.spi-card{text-align:center;align-items:center}.spi-label,.trend-label,.forecast-label{justify-content:center}}@media (max-width:640px){.overview-top{align-items:center}.hero-ring{width:96px;height:96px}.hero-ring-value span{font-size:22px}.hero-stats{gap:24px}.phase-grid{grid-template-columns:1fr}}@media (max-width:380px){.period-badge span{display:none}}.desvio-obra-top{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:20px;display:flex}.period-badge{background-color:var(--emerald-50);border:1px solid var(--emerald-200);color:var(--emerald-700);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:8px 14px;font-size:13px;font-weight:700;display:flex}.obra-phase-list{flex-direction:column;gap:20px;display:flex}.obra-phase-card{border:1px solid var(--emerald-100);background-color:#fff;border-radius:16px;padding:22px 26px 10px;box-shadow:0 8px 20px -14px #065f4633}.obra-phase-header{align-items:center;gap:10px;margin-bottom:18px;display:flex}.obra-phase-icon{background-color:var(--emerald-50);width:36px;height:36px;color:var(--emerald-700);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.obra-phase-title{letter-spacing:.04em;text-transform:uppercase;color:var(--emerald-900);margin:0;font-size:15px;font-weight:800}.obra-phase-weight{color:var(--emerald-400);font-size:12.5px;font-weight:600}.obra-phase-empty{color:var(--emerald-300);margin:0;padding:16px 4px 20px;font-size:13px;font-style:italic}.obra-summary-card{padding-bottom:22px}.obra-summary-grid{grid-template-columns:1fr 1fr;gap:16px;display:grid}.obra-summary-panel{border:1px solid var(--emerald-100);background-color:#10b9810f;border-radius:12px;flex-direction:column;min-width:0;min-height:100%;padding:12px 14px 8px;display:flex;overflow-x:auto}.obra-summary-panel-title{letter-spacing:.04em;text-transform:uppercase;color:var(--emerald-800);justify-content:space-between;align-items:baseline;gap:12px;margin:0 0 10px;font-size:12px;font-weight:800;display:flex}.obra-summary-panel-title span{letter-spacing:.02em;text-transform:none;color:var(--emerald-600);font-size:11px;font-weight:600}.obra-summary-head,.obra-summary-row{grid-template-columns:minmax(88px,1.1fr) .7fr .7fr .95fr .95fr .85fr;align-items:center;gap:8px;display:grid}.obra-summary-head{text-transform:uppercase;letter-spacing:.03em;color:var(--emerald-600);border-bottom:1px solid #065f461f;padding:0 0 8px;font-size:10px;font-weight:700}.obra-summary-head span:not(:first-child),.obra-summary-num,.obra-summary-status-cell{text-align:right;justify-self:end}.obra-summary-row{color:var(--emerald-900);border-top:1px solid #065f4614;padding:8px 0;font-size:12px}.obra-summary-head+.obra-summary-row{border-top:none}.obra-summary-row--total{border-top:1px solid #065f4629;margin-top:auto}.obra-summary-empresa{letter-spacing:.02em;text-transform:uppercase;min-width:0;color:var(--emerald-900);text-overflow:ellipsis;white-space:nowrap;font-weight:800;overflow:hidden}.obra-summary-num{white-space:nowrap;font-variant-numeric:tabular-nums}.obra-summary-num.is-strong{font-weight:800}.obra-summary-status{white-space:nowrap;align-items:center;gap:6px;font-size:12px;font-weight:700;display:inline-flex}.obra-summary-dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.obra-summary-status--positive{color:var(--emerald-700)}.obra-summary-status--positive .obra-summary-dot{background-color:var(--emerald-500)}.obra-summary-status--warning{color:#a16207}.obra-summary-status--warning .obra-summary-dot{background-color:#f59e0b}.obra-summary-status--negative{color:#b91c1c}.obra-summary-status--negative .obra-summary-dot{background-color:#dc2626}.obra-summary-status--neutral{color:var(--emerald-400)}.obra-summary-status--neutral .obra-summary-dot{background-color:var(--emerald-300)}.obra-table-head{border-bottom:1px solid var(--emerald-100);text-transform:uppercase;letter-spacing:.03em;color:var(--emerald-700);grid-template-columns:minmax(180px,1.6fr) .85fr .85fr 1fr 1fr .9fr;gap:12px;padding:0 8px 12px 34px;font-size:11px;font-weight:700;display:grid}.obra-table-head span:not(:first-child){text-align:right}.obra-company-list{flex-direction:column;display:flex}.obra-company{border-bottom:1px solid var(--emerald-50)}.obra-company:last-child{border-bottom:none}.obra-company-toggle{cursor:pointer;text-align:left;width:100%;color:var(--emerald-900);font:inherit;background:0 0;border:none;align-items:center;gap:8px;padding:14px 8px;transition:background-color .15s;display:flex}.obra-company-toggle:hover{background-color:var(--emerald-50)}.obra-company-chevron{color:var(--emerald-500);flex-shrink:0;transition:transform .2s}.obra-company.is-open .obra-company-chevron{transform:rotate(0)}.obra-company:not(.is-open) .obra-company-chevron{transform:rotate(-90deg)}.obra-company-name{letter-spacing:.02em;text-transform:uppercase;color:var(--emerald-900);font-size:13.5px;font-weight:800}.obra-bop{border-top:1px solid var(--emerald-50)}.obra-bop-toggle{cursor:pointer;text-align:left;width:100%;color:var(--emerald-800);font:inherit;background:0 0;border:none;align-items:center;gap:8px;padding:10px 8px 10px 34px;transition:background-color .15s;display:flex}.obra-bop-toggle:hover{background-color:var(--emerald-50)}.obra-bop-chevron{color:var(--emerald-500);flex-shrink:0;transition:transform .2s}.obra-bop.is-open .obra-bop-chevron{transform:rotate(0)}.obra-bop:not(.is-open) .obra-bop-chevron{transform:rotate(-90deg)}.obra-bop-name{letter-spacing:.04em;text-transform:uppercase;color:var(--emerald-700);font-size:12.5px;font-weight:800}.obra-bop-body{padding:0 8px 10px 34px}.obra-company-body{padding:0 0 8px}.obra-row{border-top:1px solid var(--emerald-50);color:var(--emerald-900);grid-template-columns:minmax(180px,1.6fr) .85fr .85fr 1fr 1fr .9fr;align-items:center;gap:12px;padding:9px 0;font-size:12.5px;display:grid}.obra-row:first-of-type{border-top:none}.obra-row-area{color:var(--emerald-800);font-weight:600;line-height:1.35}.obra-row-num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}.obra-row-status{justify-content:flex-end;display:flex}.desvio-badge{white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:4px 9px;font-size:12px;font-weight:700;display:inline-flex}.desvio-badge--positive{color:var(--emerald-700);background-color:#10b98124}.desvio-badge--warning{color:#a16207;background-color:#eab30829}.desvio-badge--negative{color:#b91c1c;background-color:#dc26261a}.desvio-badge--neutral{background-color:var(--emerald-50);color:var(--emerald-300)}.obra-status{align-items:center;gap:6px;display:inline-flex}.obra-status-track{background-color:#e5e7eb;border-radius:999px;width:56px;height:8px;display:block;overflow:hidden}.obra-status-fill{border-radius:inherit;background-color:var(--emerald-500);height:100%;transition:width .2s;display:block}.obra-status--positive{color:var(--emerald-600)}.obra-status--warning{color:#ca8a04}.obra-status--negative{color:#dc2626}.obra-status--neutral{color:var(--emerald-300)}.obra-rank-card{padding-bottom:22px}.obra-rank-section+.obra-rank-section{border-top:1px solid var(--emerald-100);margin-top:22px;padding-top:18px}.obra-rank-section-label{letter-spacing:.04em;text-transform:uppercase;align-items:center;gap:7px;margin:0 0 12px;font-size:12.5px;font-weight:800;display:flex}.obra-rank-section-label--negative{color:#b91c1c}.obra-rank-section-label--positive{color:var(--emerald-700)}.obra-rank-grid{grid-template-columns:1fr 1fr;gap:16px;display:grid}.obra-rank-table{border:1px solid var(--emerald-100);background-color:var(--emerald-50);border-radius:12px;min-width:0;padding:12px 14px 8px}.obra-rank-table--negative{background-color:#dc26260a;border-color:#dc26261f}.obra-rank-table--positive{background-color:#10b9810f}.obra-rank-table-title{letter-spacing:.04em;text-transform:uppercase;color:var(--emerald-800);margin:0 0 10px;font-size:12px;font-weight:800}.obra-rank-head,.obra-rank-row{grid-template-columns:28px minmax(72px,.8fr) minmax(96px,.95fr) minmax(110px,1.5fr) auto;align-items:center;gap:12px;display:grid}.obra-rank-head{text-transform:uppercase;letter-spacing:.03em;color:var(--emerald-600);border-bottom:1px solid #065f461f;padding:0 0 8px;font-size:10px;font-weight:700}.obra-rank-head span:last-child,.obra-rank-value{text-align:right;justify-self:end}.obra-rank-row{color:var(--emerald-900);border-top:1px solid #065f4614;padding:8px 0;font-size:12px}.obra-rank-head+.obra-rank-row{border-top:none}.obra-rank-pos{width:22px;height:22px;color:var(--emerald-700);background-color:#fff;border-radius:50%;justify-content:center;align-items:center;font-size:11px;font-weight:800;display:flex}.obra-rank-table--negative .obra-rank-pos{color:#b91c1c}.obra-rank-empresa{letter-spacing:.02em;text-transform:uppercase;min-width:0;color:var(--emerald-900);text-overflow:ellipsis;white-space:nowrap;font-weight:800;overflow:hidden}.obra-rank-bop{letter-spacing:.03em;text-transform:uppercase;min-width:0;color:var(--emerald-600);text-overflow:ellipsis;white-space:nowrap;font-weight:700;overflow:hidden}.obra-rank-area{min-width:0;color:var(--emerald-800);text-overflow:ellipsis;white-space:nowrap;font-weight:600;line-height:1.3;overflow:hidden}.obra-rank-empty{color:var(--emerald-400);margin:0;padding:14px 0 8px;font-size:12.5px;font-style:italic}@media (max-width:960px){.obra-table-head,.obra-row{grid-template-columns:minmax(140px,1.4fr) .7fr .7fr .85fr .85fr .8fr;gap:8px;font-size:11.5px}.obra-table-head{padding-left:28px;font-size:10px}.obra-company-body{padding-left:0}.obra-bop-toggle,.obra-bop-body{padding-left:28px}.obra-status-track{width:42px}.obra-rank-grid,.obra-summary-grid{grid-template-columns:1fr}}@media (max-width:720px){.obra-phase-card{padding:18px 14px 8px}.obra-rank-card{padding-bottom:16px}.obra-phase-header{flex-wrap:wrap}.obra-table-head{display:none}.obra-row{border-top:1px solid var(--emerald-100);flex-direction:column;align-items:flex-start;gap:6px;padding:12px 0;display:flex}.obra-row-num,.obra-row-status{text-align:left;justify-content:flex-start}.obra-row-num:before{text-transform:uppercase;letter-spacing:.03em;min-width:110px;color:var(--emerald-500);margin-right:8px;font-size:10px;font-weight:700;display:inline-block}.obra-row>.obra-row-num:nth-child(2):before{content:"Previsto Ac."}.obra-row>.obra-row-num:nth-child(3):before{content:"Real Ac."}.obra-row>.obra-row-num:nth-child(4):before{content:"Desvio Simples"}.obra-row>.obra-row-num:nth-child(5):before{content:"Desvio Relativo"}.obra-rank-head{display:none}.obra-rank-row{grid-template-columns:28px 1fr auto auto;grid-template-areas:"pos empresa bop value""pos area area value"}.obra-rank-pos{grid-area:pos}.obra-rank-empresa{grid-area:empresa}.obra-rank-bop{grid-area:bop;justify-self:end}.obra-rank-area{grid-area:area}.obra-rank-value{grid-area:value}}@media (max-width:380px){.desvio-obra-top .period-badge span{display:none}}.sidebar-overlay{display:none}.app-content{margin-left:var(--sidebar-width);padding-top:var(--header-height);background:radial-gradient(circle at top right, var(--emerald-50) 0%, #fff0 55%), #fff;min-height:100vh}.page{padding:36px 40px;animation:.35s page-fade-in}.page-card{border:1px solid var(--emerald-100);background-color:#fff;border-radius:16px;padding:28px 32px;box-shadow:0 10px 30px -12px #065f462e}.page-eyebrow{letter-spacing:.08em;text-transform:uppercase;color:var(--emerald-500);margin:0 0 6px;font-size:12px;font-weight:700}.page-title{color:var(--emerald-800);align-items:center;gap:10px;margin:0 0 10px;font-size:24px;font-weight:800;display:flex}.page-title-icon{background:linear-gradient(135deg, var(--emerald-400), var(--emerald-600));color:#fff;border-radius:10px;justify-content:center;align-items:center;width:38px;height:38px;display:flex;box-shadow:0 6px 14px -4px #0596698c}.page-description{max-width:640px;color:var(--emerald-800);opacity:.75;margin:0;font-size:14px;line-height:1.7}.section-divider{background:linear-gradient(90deg, var(--emerald-800), var(--emerald-300));border-radius:999px;height:18px;margin:34px 0;position:relative;box-shadow:0 3px 14px -2px #065f4666}@media (max-width:640px){.section-divider{margin:26px 0}}@keyframes page-fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media (max-width:1024px){.page{padding:28px}.page-card{padding:24px 26px}}@media (max-width:860px){.app-content{margin-left:0}.sidebar-overlay{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:190;background-color:#064e3b73;animation:.2s overlay-fade-in;display:block;position:fixed;top:0;bottom:0;left:0;right:0}}@media (max-width:640px){.page{padding:20px 16px}.page-card{border-radius:14px;padding:20px}.page-title{font-size:20px}.page-title-icon{width:32px;height:32px}}@keyframes overlay-fade-in{0%{opacity:0}to{opacity:1}}
