:root{
  --bg:#f3f7f5;--card:#fff;--ink:#172825;--muted:#60716d;--line:#dbe6e2;
  --green:#0d6f67;--green2:#0a5953;--blue:#0b4e7a;--cyan:#25a9d6;
  --ok:#137a4a;--warn:#9a6500;--danger:#b73535;--shadow:0 12px 34px rgba(31,64,56,.09);
}
*{box-sizing:border-box}html{background:var(--bg);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;color:var(--ink)}
body{margin:0;background:linear-gradient(180deg,#eef5f1 0,#f9fbfa 42%,#f3f7f5 100%);min-height:100vh}
button,input,textarea{font:inherit}.app-shell{width:min(880px,100%);margin:0 auto;padding:env(safe-area-inset-top) 18px calc(42px + env(safe-area-inset-bottom))}
.topbar{padding:18px 0 12px}.brand-row{display:flex;align-items:center;gap:12px}.logo{width:47px;height:47px;border-radius:13px}.brand-copy{display:flex;flex-direction:column;min-width:0;flex:1}.brand-copy strong{font-size:1.28rem;color:#063a54}.brand-copy span{font-size:.86rem;color:var(--muted)}
.icon-btn{border:0;background:#e9f1ee;border-radius:12px;width:42px;height:42px;cursor:pointer}.folio-row{display:flex;justify-content:space-between;gap:8px;align-items:center;margin-top:14px}.folio,.server-pill{font-size:.78rem;font-weight:800;border-radius:999px;padding:8px 12px}.folio{background:#dff4e9;color:#0d6b42}.server-pill{background:#e8eeec;color:#5a6865}.server-pill.ok{background:#dff4e9;color:#0d6b42}.server-pill.bad{background:#ffe3e3;color:#9b2d2d}
.intro{padding:16px 2px 8px}.intro h1{font-size:clamp(1.55rem,7vw,2.5rem);line-height:1.04;letter-spacing:-.045em;margin:0 0 12px;color:#153f3a}.intro p{margin:0;color:var(--muted);line-height:1.55}
.conversation{display:grid;gap:10px;margin:10px 0}.bubble{padding:13px 15px;border-radius:16px;line-height:1.45;white-space:pre-wrap}.bubble.user{background:#0d6f67;color:white;margin-left:12%}.bubble.system{background:#e9f1ee;color:#243633;margin-right:8%}.bubble.error{background:#fff0e4;color:#7b3c0d;border:1px solid #f1c48d}
.composer-card,.review,.result{background:var(--card);border:1px solid var(--line);border-radius:24px;padding:18px;box-shadow:var(--shadow);margin-top:14px}textarea{width:100%;resize:vertical;min-height:135px;border:0;outline:0;font-size:1rem;line-height:1.5;color:var(--ink);background:transparent}.files{display:flex;gap:7px;flex-wrap:wrap;margin:9px 0}.file-chip{display:inline-flex;align-items:center;gap:7px;background:#edf3f1;border-radius:14px;padding:7px 10px;font-size:.78rem;color:#40524e;max-width:100%;flex-wrap:wrap}.file-chip button{border:0;background:transparent;cursor:pointer;color:#657470}.file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:260px}.file-chip-meta{display:flex;align-items:center;gap:5px;width:100%;padding-left:24px}.role-tag{font-size:.68rem;font-weight:800;color:#0d6f67}.parcel-input{width:110px;border:1px solid #bfd3cd;border-radius:8px;padding:4px 6px;font:inherit;color:#213b36;background:#fff}.upload-note{margin:7px 0 0;color:#657470;font-size:.74rem;line-height:1.35}
.tool-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;border-top:1px solid var(--line);padding-top:13px}.tool-btn{display:flex;align-items:center;justify-content:center;gap:7px;min-height:48px;border:1px solid #bfd3cd;background:#fff;border-radius:14px;font-weight:760;cursor:pointer;color:#213b36}.tool-btn:active{transform:scale(.99)}.evidence-role-btn{background:#f8fcfb}
.primary,.secondary{border-radius:14px;padding:13px 16px;font-weight:850;cursor:pointer;border:1px solid transparent}.primary{background:linear-gradient(135deg,var(--green),var(--green2));color:white}.primary:disabled{opacity:.55;cursor:wait}.secondary{background:#fff;color:#24413b;border-color:#bcd0ca}.stop-btn{color:#8d3030;border-color:#e4b7b7;background:#fff8f8}.stop-btn:hover{background:#fff0f0}.big{width:100%;margin-top:12px;font-size:1.02rem;min-height:54px}.status-line{margin-top:11px;color:var(--muted);font-size:.84rem;min-height:1.25em}
.processing-indicator{display:flex;align-items:center;gap:9px;margin-top:9px;padding:10px 12px;border:1px solid #c8e5dc;border-radius:12px;background:#effaf6;color:#0d6f67;font-size:.8rem;font-weight:750}.loading-spinner{width:16px;height:16px;border:3px solid #b9ddd3;border-top-color:var(--green);border-radius:50%;animation:appvaluo-spin .8s linear infinite;flex:none}@keyframes appvaluo-spin{to{transform:rotate(360deg)}}
.hidden{display:none!important}.review-title{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.eyebrow{font-size:.73rem;letter-spacing:.12em;font-weight:900;color:var(--green)}h2{margin:.25rem 0 .65rem}.traffic{font-size:.74rem;font-weight:900;padding:8px 10px;border-radius:999px}.traffic.green{background:#dff4e9;color:#0d6b42}.traffic.yellow{background:#fff1c8;color:#7d5700}.traffic.red{background:#ffe1e1;color:#9b2d2d}.review-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:15px 0}.metric{border:1px solid var(--line);background:#fbfdfc;border-radius:15px;padding:12px}.metric small{display:block;color:var(--muted);font-size:.7rem;margin-bottom:5px}.metric b{font-size:.92rem;line-height:1.25;display:block;word-break:break-word}.metric.wide{grid-column:1/-1}.metric.value{background:#edf8f4;border-color:#bfe1d5}.metric.value b{font-size:1.35rem;color:#0d604d}
.panel{border:1px solid var(--line);border-radius:15px;padding:0 12px;margin:10px 0;background:#fff}.panel summary{padding:13px 0;font-weight:850;cursor:pointer}.panel>div{padding:0 0 12px}.comparables{display:grid;gap:8px}.comp{border-left:4px solid #3e9db7;background:#f7fbfc;padding:10px 12px;border-radius:10px}.comp strong{display:block;margin-bottom:4px}.comp small{color:var(--muted);line-height:1.35}.comp a{color:#0b6b89;text-decoration:none}.critical{background:#fff3e4;border:1px solid #efc47f;color:#7a4b00;padding:12px 14px;border-radius:14px;margin-top:10px}.critical strong{display:block;margin-bottom:5px}.manual-measurements{border:1px solid #c7e1d8;background:#f4fbf8;border-radius:15px;padding:13px 14px;margin-top:10px}.manual-measurements h3{color:#0b654c;margin:0 0 5px;font-size:.96rem}.manual-measure-note{color:var(--muted);font-size:.78rem;line-height:1.4;margin:0 0 11px}.manual-measure-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.manual-measure-grid label{font-size:.78rem;font-weight:800;color:#203630}.manual-measure-input{display:flex;align-items:center;gap:6px;margin-top:5px}.manual-measure-input input{width:100%;border:1px solid var(--line);border-radius:10px;padding:9px;outline:0;background:#fff;color:var(--ink)}.manual-measure-input input.invalid{border-color:#c83d3d;background:#fff0f0}.manual-measure-input small{font-weight:900;color:var(--muted)}.manual-measure-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:11px}.manual-measure-preview{border-top:1px solid #c7e1d8;margin-top:11px;padding-top:10px;color:#203630;font-size:.8rem}.manual-measure-preview>strong{display:block;margin-bottom:5px}.manual-measure-preview>div:not(.manual-measure-actions){display:flex;justify-content:space-between;gap:10px;padding:4px 0;border-bottom:1px solid #e2eee9}.review-actions,.result-actions{display:grid;grid-template-columns:1fr 1.3fr;gap:9px;margin-top:14px}.result-actions{grid-template-columns:1fr 1fr}.result-actions #newBtn{grid-column:1/-1}.link-btn{text-decoration:none;text-align:center;display:flex;align-items:center;justify-content:center}.result{border-color:#b9dfd2}.result h2{color:#0b654c}.market-management{margin-top:10px;border-top:1px solid var(--line);padding-top:8px}.market-management summary,.comp-actions-menu summary{cursor:pointer;color:#0b6b69;font-weight:800;font-size:.82rem;padding:5px 0}.market-management[open] summary,.comp-actions-menu[open] summary{margin-bottom:6px}.comp-actions-menu{margin-top:8px}.comp-actions{display:flex;gap:7px;flex-wrap:wrap}.comp-actions button{margin:0}
#settingsDialog{border:0;border-radius:20px;padding:0;width:min(92vw,520px);box-shadow:0 25px 90px rgba(0,0,0,.28)}#settingsDialog::backdrop{background:rgba(9,31,27,.45)}.settings-form{padding:20px}.dialog-head{display:flex;justify-content:space-between;align-items:center}.settings-form p{color:var(--muted);line-height:1.45}.settings-form label{display:block;font-size:.8rem;font-weight:800;margin:12px 0}.settings-form input{display:block;width:100%;margin-top:6px;border:1px solid var(--line);border-radius:12px;padding:12px;outline:0}.settings-form input:focus{border-color:#55a69a;box-shadow:0 0 0 3px rgba(13,111,103,.1)}
#locationDialog{border:0;border-radius:20px;padding:0;width:min(94vw,680px);box-shadow:0 25px 90px rgba(0,0,0,.28)}#locationDialog::backdrop{background:rgba(9,31,27,.45)}.location-form{padding:20px}.location-form p{color:var(--muted);line-height:1.45;margin:0 0 13px}.location-map{height:min(58vh,390px);min-height:270px;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#eaf0ee}.location-coordinates{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:10px}.location-coordinates label{display:block;font-size:.78rem;font-weight:800;color:#203630}.location-coordinates input{display:block;width:100%;margin-top:5px;border:1px solid var(--line);border-radius:11px;padding:10px;outline:0}.location-coordinates input:focus{border-color:#55a69a;box-shadow:0 0 0 3px rgba(13,111,103,.1)}.location-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:10px}.location-message{min-height:1.3em;margin-top:10px;color:var(--muted);font-size:.8rem;line-height:1.35}.location-message.error{color:#9b2d2d}.leaflet-container{font:inherit}@media (max-width:420px){.location-form{padding:15px}.location-coordinates,.location-actions{grid-template-columns:1fr}.location-map{height:52vh}}
.auth-gate{min-height:100vh;display:grid;place-items:center;padding:24px;background:radial-gradient(circle at top right,#d9f0e8,transparent 48%),linear-gradient(160deg,#eef7f3,#f9fbfa)}.auth-card{width:min(100%,460px);background:#fff;border:1px solid var(--line);border-radius:26px;padding:26px;box-shadow:0 20px 60px rgba(31,64,56,.13)}.auth-brand{display:flex;align-items:center;gap:12px;margin-bottom:24px}.auth-brand .logo{width:45px;height:45px}.auth-brand div{display:flex;flex-direction:column}.auth-brand strong{font-size:1.32rem;color:#063a54}.auth-brand span{font-size:.84rem;color:var(--muted)}.auth-card h1{font-size:1.65rem;letter-spacing:-.035em;margin:22px 0 8px;color:#153f3a}.auth-card>p{color:var(--muted);line-height:1.45;margin:0 0 18px}.auth-tabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;background:#edf3f1;border-radius:14px}.auth-tab{border:0;background:transparent;border-radius:10px;padding:10px;font-weight:800;color:var(--muted);cursor:pointer}.auth-tab.active{background:#fff;color:var(--green);box-shadow:0 2px 8px rgba(31,64,56,.08)}#authForm label{display:block;font-size:.8rem;font-weight:800;margin:13px 0;color:#203630}#authForm input{display:block;width:100%;margin-top:6px;border:1px solid var(--line);border-radius:12px;padding:12px;outline:0}#authForm input:focus{border-color:#55a69a;box-shadow:0 0 0 3px rgba(13,111,103,.1)}.auth-link{display:block;margin:13px auto 0;border:0;background:transparent;color:#0d6f67;font-weight:800;font-size:.83rem;cursor:pointer}.auth-link:hover{text-decoration:underline}.auth-message{min-height:1.35em;margin-top:13px;color:var(--muted);font-size:.86rem;line-height:1.4}.auth-message.error{color:#9b2d2d}.auth-message.ok{color:#0d6b42}.auth-dialog-form{padding:20px}.auth-dialog-form p{color:var(--muted);line-height:1.45}.auth-dialog-form label{display:block;font-size:.8rem;font-weight:800;margin:13px 0;color:#203630}.auth-dialog-form input{display:block;width:100%;margin-top:6px;border:1px solid var(--line);border-radius:12px;padding:12px;outline:0}.auth-dialog-form input:focus{border-color:#55a69a;box-shadow:0 0 0 3px rgba(13,111,103,.1)}#forgotPasswordDialog{border:0;border-radius:20px;padding:0;width:min(92vw,460px);box-shadow:0 25px 90px rgba(0,0,0,.28)}#forgotPasswordDialog::backdrop{background:rgba(9,31,27,.45)}.account-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#fff;border:1px solid var(--line);border-radius:17px;padding:11px 13px;margin:7px 0 11px;box-shadow:0 5px 18px rgba(31,64,56,.05)}.account-bar>div:first-child{display:flex;flex-direction:column;min-width:0}.account-bar strong{font-size:.88rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-bar small{font-size:.75rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.account-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.compact{padding:8px 10px;border-radius:11px;font-size:.76rem}.workspace-panel{background:#fff;border:1px solid var(--line);border-radius:20px;padding:16px;box-shadow:var(--shadow);margin:12px 0}.workspace-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.workspace-heading h2{margin:.2rem 0 .3rem}.panel-note{font-size:.84rem;color:var(--muted);margin:.2rem 0 13px}.workspace-panel h3{font-size:.9rem;color:#24514a;border-top:1px solid var(--line);padding-top:13px;margin:16px 0 8px}.library-list,.admin-list{display:grid;gap:8px}.library-item,.admin-item{border:1px solid var(--line);border-radius:13px;padding:11px 12px;background:#fbfdfc}.library-item{display:flex;justify-content:space-between;align-items:center;gap:10px}.library-item strong,.admin-item strong{display:block;font-size:.86rem}.library-item small,.admin-item small{display:block;color:var(--muted);font-size:.74rem;line-height:1.35;margin-top:3px}.library-item .secondary{white-space:nowrap;font-size:.76rem;padding:8px 10px}.admin-item{display:flex;justify-content:space-between;gap:10px;align-items:center}.admin-item-actions{display:flex;gap:6px;flex-shrink:0}.admin-item-actions button{padding:8px 9px;border-radius:10px;border:1px solid transparent;font-weight:800;font-size:.72rem;cursor:pointer}.admin-item-actions .approve{background:#dff4e9;color:#0d6b42}.admin-item-actions .reject{background:#ffe6e6;color:#9b2d2d}.empty-state{color:var(--muted);font-size:.84rem;padding:10px 0}
@media (min-width:700px){.tool-grid{grid-template-columns:repeat(3,1fr)}.review-cards{grid-template-columns:repeat(4,1fr)}.metric.wide{grid-column:span 2}.app-shell{padding-left:28px;padding-right:28px}.composer-card,.review,.result{padding:24px}}
@media (max-width:420px){.tool-btn span{font-size:.78rem}.review-actions{grid-template-columns:1fr}.file-name{max-width:200px}}
.metric.requested-range{background:#fffaf0;border-color:#ead49a}
@media (max-width:420px){.manual-measure-grid{grid-template-columns:1fr}}
.manual-evidence-input{align-items:stretch;flex-direction:column}.manual-evidence-input select{width:100%;border:1px solid var(--line);border-radius:10px;padding:9px;outline:0;background:#fff;color:var(--ink);font:inherit}.manual-evidence-input select:focus,.manual-evidence-input input:focus{border-color:#55a69a;box-shadow:0 0 0 3px rgba(13,111,103,.1)}
.market-note{color:var(--muted);font-size:.82rem;line-height:1.45}.market-primary-action{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:11px 0 4px;padding:10px 0;border-top:1px solid var(--line)}.market-primary-action .primary{white-space:nowrap}.market-actions{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 4px}.market-warning{border-left:3px solid #c78418;padding-left:10px}.alternates-heading{grid-column:1/-1;margin-top:4px;padding:8px 0 0;color:#7d5700;font-size:.74rem;font-weight:900;letter-spacing:.08em}.comp-alt{border-left-color:#c89b32;background:#fffaf0}.comp-secondary{border-left-color:#c78418;background:#fffaf1}.alternate-actions{display:flex;gap:7px;align-items:center;margin-top:9px}.alternate-actions select{min-width:145px;border:1px solid #d8c58f;border-radius:9px;padding:7px;background:white;color:#4f4323;font-size:.78rem}.alternate-actions .compact{padding:7px 9px;font-size:.72rem}.status-muted{color:var(--muted);font-size:.76rem}.preliminary-estimate{display:grid;gap:5px;margin:8px 0;padding:11px 12px;border:1px solid #e1b85b;border-left:5px solid #b87900;border-radius:11px;background:#fff8e8;color:#5e430c;line-height:1.4}.preliminary-estimate strong{font-size:.82rem;color:#7a4b00}.preliminary-estimate span{font-size:.8rem}.preliminary-estimate small{font-size:.76rem;color:#725f3c}.preliminary-estimate.pending{border-color:#e5cda3;background:#fffaf1}.market-preliminary{margin-top:10px}.market-preliminary strong{color:#7a4b00}
.improvement-line{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid #e5eeeb}.improvement-line span{font-weight:700}.improvement-line small{color:var(--muted);text-align:right}.improvement-total{display:flex;justify-content:space-between;gap:12px;padding-top:10px;color:#0d604d}
.improvement-controls{display:flex;align-items:end;gap:8px;flex-wrap:wrap;padding:7px 0 10px;border-bottom:1px solid #e5eeeb}.improvement-controls label{display:grid;gap:4px;color:var(--muted);font-size:.72rem;font-weight:800}.improvement-controls input{width:126px;max-width:34vw;border:1px solid var(--line);border-radius:9px;padding:8px;background:#fff;color:var(--ink)}.improvement-controls .danger-action{color:#8d3030;border-color:#e4b7b7;background:#fff8f8}.market-expand-prompt{border:1px solid #b9dfd2;border-radius:12px;background:#f2fbf7;padding:10px 12px}.market-expand-prompt button:disabled{opacity:.5;cursor:not-allowed}
.improvement-entry.pending-removal{opacity:.58}.improvement-entry.pending-removal .improvement-line span{text-decoration:line-through}.improvement-pending-removal{display:block;margin-top:4px;color:#9b2d2d;font-size:.75rem;font-weight:800}.improvement-save-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap;padding:8px 0 12px}.improvement-save-actions .primary{min-width:150px}.improvement-save-actions [data-improvement-save-message]{min-height:1em}
/* Persistencia de proyectos: estados discretos y controles compactos para móvil. */
.project-toolbar{display:flex;gap:8px;align-items:center;margin:10px 0}.project-toolbar input{min-width:0;flex:1;border:1px solid var(--line);border-radius:11px;padding:9px 10px;background:#fff;color:var(--ink)}
.project-save-status{margin-top:7px;color:var(--muted);font-size:.78rem;min-height:1.2em}.project-save-status.saving{color:#86631c}.project-save-status.saved{color:#0d6b42}.project-save-status.pending{color:#86631c}.project-save-status.error{color:#9b2d2d}
.project-item{align-items:flex-start}.project-item .admin-item-actions{flex-wrap:wrap;justify-content:flex-end}.project-item .status-muted{font-size:.72rem;color:var(--muted);white-space:nowrap}
.new-opinion-action{box-shadow:0 5px 14px rgba(13,111,103,.18);white-space:nowrap}
@media (max-width:520px){.project-toolbar{align-items:stretch;flex-direction:column}.project-toolbar .secondary{width:100%}.project-item{display:block}.project-item .admin-item-actions{justify-content:flex-start;margin-top:9px}.account-bar{align-items:stretch;flex-direction:column}.account-actions{max-width:none;display:grid;grid-template-columns:1fr 1fr;width:100%}.account-actions .new-opinion-action{grid-column:1/-1;width:100%;min-height:42px}.account-actions #logoutBtn{justify-self:stretch}}
.review-detail-toggle{display:flex;align-items:center;gap:10px;margin:12px 0 4px;padding:10px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.review-detail-toggle button{flex:0 0 auto}
#adminPasswordDialog{border:0;border-radius:20px;padding:0;width:min(92vw,480px);box-shadow:0 25px 90px rgba(0,0,0,.28)}#adminPasswordDialog::backdrop{background:rgba(9,31,27,.48)}#adminPasswordDialog .auth-dialog-form{padding:22px}.admin-password-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.admin-password-actions button{padding:10px 13px;border-radius:10px;font-weight:800;cursor:pointer}.tariff-item .admin-item-actions{flex-wrap:wrap;justify-content:flex-end}.tariff-item [data-admin-password-id]{background:#e7f2ef;color:#0a5953;border-color:#cfe1db}
.review-detail-toggle span{color:var(--muted);font-size:.76rem;line-height:1.35}
.technical-details{padding-top:2px}
.review-extra-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:8px 0 10px}
.review-extra-summary .metric{min-height:64px}
@media (min-width:700px){.review-extra-summary{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media (max-width:520px){.review-detail-toggle{align-items:flex-start;flex-direction:column}.review-detail-toggle button{width:100%}.review-extra-summary{grid-template-columns:1fr}}
.comp-actions{display:flex;flex-wrap:wrap;gap:7px;margin-top:9px}.comp-actions .compact{font-size:.72rem;padding:7px 9px}.comp-actions .danger-action{color:#8d3030;border-color:#e4b7b7;background:#fff8f8}.comp-actions .include-action{color:#0d6b42;border-color:#b9dfd2;background:#f2fbf7}
.factor-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:12px 0}.factor-grid label{display:block;font-size:.76rem;font-weight:800;color:#203630}.factor-grid input{display:block;width:100%;margin-top:5px;border:1px solid var(--line);border-radius:10px;padding:9px;outline:0;background:#fff;color:var(--ink)}.factor-grid input:focus{border-color:#55a69a;box-shadow:0 0 0 3px rgba(13,111,103,.1)}
.map-panel{margin-top:16px;border-top:1px solid var(--line);padding-top:13px}.map-panel summary{cursor:pointer;font-weight:800;color:#24514a}.opinion-map{height:min(55vh,380px);min-height:250px;border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#eaf0ee}.map-conflicts{display:grid;gap:8px;margin-top:10px}.map-conflict{border:1px solid #edc16d;border-left:4px solid #c98200;border-radius:11px;padding:10px 12px;background:#fff8e9;color:#594313;font-size:.8rem;line-height:1.4}.map-conflict strong{display:block;color:#513800}.map-conflict-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.map-conflict-actions button{padding:7px 9px;border:1px solid #caa65d;border-radius:9px;background:#fff;color:#624813;font-weight:800;font-size:.72rem;cursor:pointer}.map-conflict-actions button:disabled{opacity:.6;cursor:wait}.map-empty{color:var(--muted);font-size:.82rem;padding:8px 0}.map-marker-normal{fill:#0d6f67;stroke:#fff}.map-marker-warning{fill:#c98200;stroke:#fff}.map-marker-duplicate{fill:#a83f3f;stroke:#fff}
@media (max-width:420px){.factor-grid{grid-template-columns:1fr}}
.library-folder{border:1px solid var(--line);border-radius:15px;padding:10px 12px;background:#f7fbf9}.library-folder h4{margin:0 0 9px;color:#0d6f67;font-size:.9rem}.library-folder>summary{cursor:pointer;color:#0d6f67;font-weight:800;padding:3px 0;list-style-position:inside}.library-folder>summary span{float:right;color:var(--muted);font-size:.76rem;font-weight:700}.library-folder .library-list{margin-top:8px}.danger-action{color:#9b2d2d!important;border-color:#efcaca!important}
.demo-project-card{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:10px 0;padding:12px 13px;border:1px dashed #0d6f67;border-radius:14px;background:linear-gradient(135deg,#effaf5,#f8fcfb)}.demo-project-card>div{display:flex;flex-direction:column;gap:3px;min-width:0}.demo-project-card strong{font-size:.86rem;color:#173f39}.demo-project-card small{color:var(--muted);font-size:.74rem;line-height:1.35}.demo-project-card .eyebrow{color:#0d6f67;font-size:.65rem;font-weight:900;letter-spacing:.08em}.demo-project-card button{white-space:nowrap}

/* v6.1.51 · Planes y tarifas: controles editables y móviles */
#adminTariffs .admin-item{align-items:flex-start;flex-wrap:wrap}#adminTariffs .admin-item-actions{flex-wrap:wrap;min-width:0;align-items:flex-end;justify-content:flex-end;flex:1}#adminTariffs .tariff-control{display:flex;flex-direction:column;gap:4px;color:#31544e;font-size:.76rem;font-weight:700;min-width:125px}#adminTariffs .tariff-control input,#adminTariffs .tariff-control select{max-width:170px;min-width:118px;height:38px;padding:7px 9px;border:1px solid #c9dcd5;border-radius:9px;background:#fff;color:#163c35;font:inherit;font-size:.95rem}#adminTariffs .tariff-check{display:flex;align-items:center;gap:5px;font-size:.85rem}.billing-professional-options{margin-top:12px;padding:12px;border:1px solid #b7d4c9;border-radius:12px;background:#f5fbf8}.billing-professional-options p{margin:6px 0 10px}.billing-professional-options .review-actions{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0}.billing-professional-options button{max-width:100%}@media(max-width:720px){#adminTariffs .admin-item-actions{justify-content:flex-start}#adminTariffs .tariff-control input,#adminTariffs .tariff-control select{max-width:160px}}
/* v6.1.55 — tabla viva de homologación; el desplazamiento se limita al cuadro. */
#comparables .market-table-section{min-width:0;border:1px solid #bed8d0;border-radius:14px;background:#fff;overflow:hidden;margin:5px 0 12px}
#comparables .market-table-heading{display:flex;flex-direction:column;gap:4px;padding:13px 14px;background:#ecf6f2;color:#153e36}
#comparables .market-table-heading strong{font-size:.99rem}
#comparables .market-table-heading small{color:#526c64;font-size:.77rem;line-height:1.4}
#comparables .market-table-scroller{max-width:100%;overflow-x:auto;overscroll-behavior-inline:contain;border-top:1px solid #d6e6e1}
#comparables .market-table-scroller:focus-visible{outline:2px solid #0d7067;outline-offset:-2px}
#comparables .market-comparables-table{table-layout:auto;border-spacing:0;border-collapse:separate;width:max-content;min-width:100%;font-size:.78rem;color:#263e39}
#comparables .market-comparables-table th,#comparables .market-comparables-table td{border-right:1px solid #e3ebe8;border-bottom:1px solid #e3ebe8;padding:9px 6px;text-align:left;vertical-align:middle;white-space:nowrap}
#comparables .market-comparables-table thead th{position:sticky;top:0;z-index:2;font-size:.72rem;background:#f3f8f6;color:#29544b;font-weight:850}
#comparables .market-comparables-table .market-sticky-col{position:sticky;left:0;z-index:1;background:#fff;max-width:190px;min-width:160px;white-space:normal;box-shadow:2px 0 0 #d3e5df}
#comparables .market-comparables-table thead .market-sticky-col{z-index:3;background:#e5f1ec}
#comparables .market-comparables-table tbody tr:nth-child(even) .market-sticky-col{background:#f7fbf9}
#comparables .market-comparables-table tbody tr:nth-child(even) td{background:#f7fbf9}
#comparables .market-sticky-col strong{display:block;color:#1a3e37;font-size:.81rem}
#comparables .market-sticky-col small{display:block;white-space:normal;color:#597269;margin:4px 0;line-height:1.25;overflow-wrap:anywhere}
#comparables .market-sticky-col a{color:#006b75;font-size:.73rem;text-decoration:underline}
#comparables .market-table-input{box-sizing:border-box;display:block;min-height:37px;border:1px solid #b6d2c9;border-radius:7px;background:#fff;color:#152e28;padding:7px 6px;font-size:16px;text-align:right;font-variant-numeric:tabular-nums}
#comparables .market-table-input.amount{width:131px}
#comparables .market-table-input.factor{width:64px}
#comparables .market-table-input:focus{outline:2px solid #0d6f67;outline-offset:0;border-color:#0d6f67}
#comparables .market-table-input.invalid{border-color:#c42b2b;background:#fff0f0}
#comparables .market-comparables-table .result-number{text-align:right;font-variant-numeric:tabular-nums;font-weight:700;white-space:nowrap;padding:9px 9px}
#comparables .market-highlight-cell{color:#065948;background:#edf9f1!important;font-weight:850}
#comparables .market-table-results{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;padding:12px;border-top:1px solid #d7e5df;background:#eef8f4}
#comparables .market-table-results>div{min-width:0;display:flex;flex-direction:column;gap:4px;padding:9px;background:#fff;border:1px solid #d6e9df;border-radius:10px}
#comparables .market-table-results small{font-size:.71rem;color:#5b736c;line-height:1.3}
#comparables .market-table-results strong{color:#0b5b4d;font-size:.88rem;overflow-wrap:anywhere}
#comparables .market-table-toolbar{display:flex;gap:9px;align-items:flex-end;flex-wrap:wrap;padding:11px 12px 13px;background:#fff}
#comparables .market-table-toolbar label{display:grid;gap:5px;min-width:min(100%,240px);flex:1;color:#24473f;font-size:.77rem;font-weight:800}
#comparables .market-table-toolbar input{width:100%;box-sizing:border-box;min-height:42px;border-radius:9px;border:1px solid #bcd3ca;padding:8px 10px;font-size:16px;background:#fff;color:#173b32}
#comparables .market-table-toolbar button{min-height:42px}
#comparables .market-table-toolbar button:disabled{opacity:.55;cursor:not-allowed}
#comparables .market-table-toolbar [data-market-table-message]{width:100%;line-height:1.4}
@media(max-width:620px){#comparables .market-table-results{grid-template-columns:1fr}#comparables .market-table-toolbar button{width:100%}#comparables .market-comparables-table .market-sticky-col{min-width:128px;max-width:155px}#comparables .market-table-heading{padding:11px}}
#comparables .market-alternatives{min-width:0;border:1px solid #e4d8b7;border-radius:12px;padding:9px 12px;background:#fffaf0;margin-bottom:12px}
#comparables .market-alternatives>summary{cursor:pointer;font-weight:850;color:#775200;min-height:34px}
#comparables .market-alternatives .market-table-scroller{margin-top:10px;background:#fff;border:1px solid #eadfc6;border-radius:9px}
#comparables .market-alternatives .market-alternative-table{font-size:.77rem}
#comparables .market-alternatives .alternate-actions{margin:0}
/* v6.1.55 Tabla ÚNICA de referencias y edición del valor unitario construcción */
#comparables .market-table-badge{display:inline-flex;max-width:max-content;font-size:.65rem;padding:3px 5px;border-radius:5px;margin:4px 0;font-weight:850;letter-spacing:.02em;background:#eef3f2;color:#22554b}
#comparables .market-table-badge.active{background:#ddf3e7;color:#12583e}
#comparables .market-table-badge.alternate,#comparables .market-table-badge.manual{background:#fff3d6;color:#765215}
#comparables .market-table-badge.secondary{background:#edf1f8;color:#4b5f83}
#comparables .market-comparables-table tbody tr[data-table-status="alternate"]{background:#fffdf7}
#comparables .market-comparables-table tbody tr[data-table-status="secondary"]{background:#f6f7f8}
#comparables .market-construction-editor{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:12px;padding:13px;border-top:1px solid #c5dcd5;background:#f3f8f6}
#comparables .market-construction-editor label{display:grid;gap:5px;color:#16453a;font-size:.88rem}
#comparables .market-construction-editor small{color:#526d63;font-size:.76rem;line-height:1.4}
#comparables .market-construction-editor input{font-size:16px;width:100%;max-width:250px;box-sizing:border-box;border-radius:8px;border:1px solid #abc8be;padding:10px;background:white;color:#173e32}
#comparables .market-construction-editor input.invalid{border-color:#c42b2b;background:#fff0f0}
#comparables .market-construction-editor>div{display:flex;flex-direction:column;gap:9px;padding:12px;background:white;border-radius:10px;border:1px solid #d5e4dc}
#comparables .market-construction-editor strong{font-size:1rem;color:#0a5b49;overflow-wrap:anywhere}
@media(max-width:640px){#comparables .market-construction-editor{grid-template-columns:1fr}#comparables .market-construction-editor input{max-width:100%}}
