:root{--nav:#102438;--blue:#0878ed;--blue2:#0b68c8;--ink:#101828;--mut:#5f6b7a;--line:#dce4ec;--bg:#f4f7fa;--card:#fff;--soft:#edf4fa;--green:#eaf8ef}*{box-sizing:border-box}body{margin:0;font-family:Inter,Arial,sans-serif;color:var(--ink);background:var(--bg)}button,input,select{font:inherit}.hidden{display:none!important}.brand{font-size:35px;font-weight:950;letter-spacing:-2px;color:#fff;line-height:.75}.brand sup{font-size:10px}.brand small{display:block;font-size:13px;letter-spacing:0;margin-top:9px}.brand.black{color:#080808}.login{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#eef5fb,#fff)}.login-card{width:min(92vw,430px);background:#fff;border:1px solid var(--line);border-radius:18px;padding:32px;box-shadow:0 20px 60px #0b2d4c18}.login-card h1{margin:35px 0 4px}.login-card p{color:var(--mut)}label{font-weight:700;font-size:14px;display:block;margin:13px 0}input,select{width:100%;padding:12px;border:1px solid #cbd6e1;border-radius:7px;margin-top:7px;background:#fff}.wide{width:100%;margin-top:12px}.primary,.secondary,.bottom button{border:0;border-radius:7px;padding:12px 18px;font-weight:800;cursor:pointer}.primary{background:var(--blue);color:#fff}.secondary{background:#e7eef5}.linkbtn{border:0;background:none;color:var(--blue2);width:100%;padding:14px}.hint{font-size:12px}.shell{display:grid;grid-template-columns:190px 1fr;min-height:100vh}aside{background:var(--nav);padding:24px 8px;color:#fff;position:sticky;top:0;height:100vh}aside .brand{padding:0 25px 24px}nav button{display:flex;gap:13px;align-items:center;width:100%;border:0;color:#fff;background:transparent;padding:13px 14px;border-radius:6px;text-align:left;margin:3px 0}nav button:hover,nav button.active{background:var(--blue)}.aside-foot{position:absolute;bottom:25px;left:20px;line-height:1.5;font-size:13px}main{min-width:0}header{height:70px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:center;position:relative}header h2{font-size:20px}.account{position:absolute;right:18px;top:9px;display:grid;grid-template-columns:auto auto;gap:0 12px;align-items:center}.account small{grid-column:1}.account button{grid-row:1/3;grid-column:2;border:0;background:var(--nav);color:#fff;padding:10px;border-radius:6px}.mobile-brand{display:none}.projectbar{display:flex;justify-content:flex-end;gap:25px;align-items:center;background:#fff;border-bottom:1px solid var(--line);padding:9px 24px;font-size:13px}.projectbar span{background:#eaf4ff;color:#076acb;padding:8px;border-radius:5px}.steps{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;padding:0 12px 10px;background:#fff}.step{display:flex;align-items:center;gap:13px;border:0;background:#e9eef4;padding:10px 14px;border-radius:8px;text-align:left;min-height:61px}.step strong{font-size:24px;background:#d5dfe9;width:40px;height:40px;border-radius:50%;display:grid;place-items:center}.step small{display:block;color:#526170;margin-top:3px}.step.on{background:linear-gradient(135deg,#0878ed,#006bd7);color:#fff}.step.on strong{background:#fff;color:#0878ed}.step.on small{color:#eaf5ff}.page{padding:14px}.title{margin:0 0 4px;font-size:25px}.subtitle{color:var(--mut);margin-top:0}.layout{display:grid;grid-template-columns:410px 1fr;gap:12px}.card{background:#fff;border:1px solid var(--line);border-radius:8px;padding:14px;margin-bottom:12px}.card h3{margin:0 0 12px}.choice{display:flex;gap:8px}.choice button{flex:1;padding:12px;border:1px solid var(--line);background:#f8fafc;border-radius:6px}.choice .on{background:var(--blue);color:#fff}.grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.room{height:420px;background:linear-gradient(#eaf4fb,#f9fcff);position:relative;overflow:hidden;border-radius:6px}.rbox{position:absolute;left:9%;top:22%;width:80%;height:48%;background:repeating-linear-gradient(90deg,#d5dde2 0 18px,#b9c4cb 19px 20px);border:7px solid #4d5961;transform:skewY(-3deg);box-shadow:18px 16px 0 #6a747a}.rdoor{position:absolute;left:28%;top:39%;width:10%;height:31%;background:#c3cdd3;border:4px solid #59636a}.rdoor.two{left:55%;width:16%}.joint{position:absolute;top:23%;height:47%;width:5px;background:#424d55;left:43%}.joint.j2{left:70%}.dim{position:absolute;background:#0878ed;color:#fff;padding:8px 12px;border-radius:5px;font-weight:800;top:9%;left:50%;transform:translateX(-50%)}.lug{position:absolute;bottom:25%;width:16px;height:8px;background:#d3a11e;border-radius:6px}.lug.a{left:14%}.lug.b{left:45%}.lug.c{right:15%}.viewbar{display:flex;justify-content:center;gap:8px;margin-top:10px}.viewbar button{padding:9px;border:1px solid var(--line);background:#fff;border-radius:6px}.table{width:100%;border-collapse:collapse;font-size:13px}.table th,.table td{padding:9px;border:1px solid #e1e7ed;text-align:left}.table th{background:#eef3f7}.kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.kpi{background:#f3f6f9;padding:14px;border-radius:7px}.kpi b{display:block;font-size:20px;margin-top:6px}.total{font-size:24px;font-weight:900;text-align:right;padding:12px 0}.note{padding:11px;background:#eaf4ff;border-left:4px solid var(--blue);font-size:13px}.green{background:var(--green)}.bottom{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:14px}.bottom>button{background:#fff;border:1px solid #cbd6e1}.bottom div{display:flex;gap:8px}@media(max-width:850px){.shell{display:block}aside{display:none}header{height:auto;padding:12px;justify-content:flex-start}.mobile-brand{display:block;font-size:27px}header h2{display:none}.account{position:static;margin-left:auto;font-size:11px}.account button{padding:7px}.projectbar{justify-content:space-between;padding:8px 12px}.steps{display:flex;overflow:auto;padding:8px}.step{min-width:190px}.page{padding:10px}.layout{grid-template-columns:1fr}.room{height:270px}.grid{grid-template-columns:1fr}.kpis{grid-template-columns:1fr}.title{font-size:21px}.bottom{position:sticky;bottom:0;background:var(--bg);padding:10px 0}.brand small{font-size:10px}}
.similar{display:flex;justify-content:space-between;gap:18px;align-items:center;background:#fff;border:2px solid #0878ed;border-radius:10px;padding:16px;margin-bottom:12px}.similar h3{margin:4px 0}.similar p{margin:6px 0;color:var(--mut)}.similar small{display:block;color:var(--mut);margin-top:4px}.eyebrow{font-size:11px;font-weight:900;letter-spacing:.08em;color:var(--blue2)}.similar-actions{display:grid;gap:7px;min-width:190px}.compact{padding:7px}.copied{border-left:5px solid #2e9b5f}.copied h3{color:#207748}.checks{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.checks label{font-weight:600;margin:0;padding:9px;background:#f5f7f9;border-radius:6px}.checks input{width:auto;margin:0 8px 0 0}.modal{position:fixed;inset:0;background:#102438aa;display:grid;place-items:center;padding:18px;z-index:99}.modal-card{width:min(720px,96vw);max-height:90vh;overflow:auto;background:#fff;border-radius:12px;padding:22px;position:relative}.modal-x{position:absolute;right:12px;top:10px;border:0;background:#eef2f5;border-radius:50%;width:38px;height:38px;font-size:24px}.review-head{display:flex;justify-content:space-between;gap:12px;align-items:center;border-bottom:1px solid var(--line);padding-bottom:12px}.review-head small,.review-head b{display:block}.badge{background:#eaf8ef;color:#207748;padding:7px 9px;border-radius:20px;font-size:12px;font-weight:800}.review-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:4px 18px}.review-grid p{padding-bottom:8px;border-bottom:1px solid #edf0f3}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.validation{min-height:22px;color:#a33;font-weight:700}@media(max-width:700px){.similar{display:block}.similar-actions{margin-top:14px}.checks,.review-grid{grid-template-columns:1fr}.review-head{align-items:flex-start;flex-direction:column}.modal-actions{flex-direction:column-reverse}.modal-actions button{width:100%}}
.cloud-mobile-actions{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px}.table-scroll{overflow-x:auto}button:disabled{opacity:.55;cursor:default}#cloudStatus{max-width:60%;font-size:14px}#loginMessage{font-size:14px}.hint,.note,.table,.projectbar{font-size:14px}.room .dim{max-width:90%;text-align:center}@media(max-width:850px){#cloudStatus{max-width:55%}.bottom button{padding:12px}.account{font-size:14px}}

.rscene{position:absolute;inset:0;transform:rotateY(var(--room-rotate)) scale(var(--room-scale));transform-style:preserve-3d;transition:transform .25s ease;transform-origin:center center}.viewbar{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.viewbar button{font-size:12px;padding:7px 10px}.room{perspective:900px;overflow:hidden}.rbox,.rdoor,.joint,.lug{transform-style:preserve-3d}
.proposal-info{display:flex;gap:10px;background:#eaf4ff;border-radius:10px;padding:12px 16px;margin-bottom:14px;color:#23445f}.proposal-info span{font-size:22px;color:#0878ed}.material-proposal-grid{display:grid;grid-template-columns:300px minmax(0,1fr);gap:12px}.material-picker{min-height:560px}.material-picker label{background:#fff}.material-picker label:first-letter{color:#0878ed}.material-picker button{margin:6px 6px 0 0}.material-main{min-width:0}.material-detail{display:grid;grid-template-columns:1fr 280px;gap:12px;min-height:310px}.material-photo{width:210px;height:180px;object-fit:contain;background:#eef3f8;border-radius:6px;display:block;margin:8px 0}.reference-card{border-left:1px solid var(--line);padding-left:16px}.reference-card img{width:100%;height:230px;object-fit:contain}.material-total{text-align:right;border-top:1px solid var(--line);padding-top:10px}.proposal-summary-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.summary-card{background:#fff;border:1px solid var(--line);border-radius:8px;padding:12px}.summary-card h3{margin:0 0 8px}.summary-card.green{border-color:#a9dfbf;background:#f5fff8}.summary-card.amber{border-color:#f4c77d;background:#fffaf0}.clean-room-preview .room{height:170px}.clean-room-preview .viewbar,.clean-room-preview .hint{display:none}.room-clean .rdoor,.room-clean .lug{display:none}.room-clean .rbox{filter:saturate(.8)}@media(max-width:950px){.material-proposal-grid,.material-detail,.proposal-summary-grid{grid-template-columns:1fr}.reference-card{border-left:0;border-top:1px solid var(--line);padding:12px 0}.material-picker{min-height:auto}}

/* Más espacio para la consulta de materiales en PC. */
.material-main .table{font-size:12px}.material-main .table th,.material-main .table td{padding:6px;overflow-wrap:anywhere}.material-main .table td:nth-child(7),.material-main .table td:nth-child(8),.material-main .table td:nth-child(9){white-space:nowrap;overflow-wrap:normal}.material-main .table td:last-child button{padding:6px 8px;margin:2px 0}.material-picker{min-width:0}.material-picker select{max-width:100%}

button.save-feedback{background:var(--blue)!important;color:#fff!important;border-color:var(--blue)!important;box-shadow:0 0 0 3px #0878ed26;transition:background .15s,color .15s}


.parameter-tabs{display:flex;gap:8px;overflow:auto;padding:12px 0}.parameter-tabs button{white-space:nowrap}.parameter-page-controls{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.parameter-page-controls label{display:flex;gap:8px;align-items:center}.parameter-page-controls input{width:100px}.parameter-grid{overflow:auto;max-height:65vh;background:#fff;border:1px solid #c9c9c9}.parameter-grid table{border-collapse:collapse;table-layout:fixed;min-width:max-content}.parameter-grid td,.parameter-grid th{border:1px solid #d4d4d4;padding:3px 5px;font:12px Arial;white-space:nowrap;height:22px}.parameter-grid th{position:sticky;top:0;background:#e8edf3;z-index:1}.parameter-grid td input{border:0;margin:0;padding:2px;width:100%;min-width:60px;height:22px;background:#edf7ff;color:#075fae;font:12px Arial}.parameter-grid td input:focus{outline:2px solid var(--blue)}



/* Production module: retains the existing quotation home. */
aside nav button.production-nav,.production-nav{background:#2563eb;color:#fff;border:1px solid #4f83ee;border-radius:8px}
[hidden]{display:none!important}
.production-head,.production-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.production-head p{color:#52657a}.production-actions{justify-content:flex-start;margin-bottom:16px}
.production-project-fields{display:grid;grid-template-columns:repeat(3,minmax(160px,1fr));gap:16px}
.production-open .bottom,.production-open #steps{display:none!important}
.production-gantt{font-size:12px;min-width:1050px}.production-gantt th:last-child,.production-gantt td:last-child{min-width:450px;width:50%}
.production-gantt td:first-child{min-width:230px}.production-gantt small{display:block}
.production-summary{background:#e9f0f8;font-weight:700}
.production-track{height:24px;position:relative;background:repeating-linear-gradient(to right,#f8fafc 0,#f8fafc calc(100% / var(--production-weeks,28) - 1px),#e2e8f0 calc(100% / var(--production-weeks,28) - 1px),#e2e8f0 calc(100% / var(--production-weeks,28)));min-width:450px}
.production-bar{position:absolute;top:4px;height:16px;background:#bfdbfe;border:1px solid #2563eb;border-radius:3px;overflow:hidden}
.production-bar span{display:block;height:100%;background:#059669}.production-bar.late{border:2px solid #dc2626}
.production-milestone{position:absolute;color:#2563eb;top:2px}.production-time-labels{display:flex;justify-content:space-between;font-size:10px;font-weight:normal}
.production-schedule input{min-width:120px}.production-schedule td:first-child{min-width:280px}
.production-control{font-size:12px}.production-control input[type=number]{width:90px}.production-control td:nth-child(2){min-width:260px}.production-control input:not([type=checkbox]){min-width:100px}
.production-curve{display:block;max-width:900px;width:100%;height:auto}
.production-alert-group{border-left:3px solid #d97706;padding:10px 18px;background:#fff8ec;margin:10px 0}
.production-alert{font-size:13px}.production-alert.delay{color:#b91c1c}.production-access-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:16px 0;border-bottom:1px solid #dce4ec}
.production-history{max-width:1100px;max-height:90vh;overflow:auto}
#productionMessage{color:#1d4ed8}#productionTabs button:disabled{opacity:.6}
@media(max-width:700px){.production-project-fields{grid-template-columns:1fr}.production-head{align-items:flex-start}}

.production-company-form{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin:12px 0}.production-company-day td{font-weight:700;color:#173d6b;background:#eef5ff}

.production-schedule td.production-id{min-width:50px;width:50px;text-align:center;white-space:nowrap}.production-schedule td:nth-child(2){min-width:280px}.production-schedule .production-exclusion-cell{min-width:75px;text-align:center}.production-schedule input[type=checkbox]{width:20px;min-width:20px;height:20px;margin:0;accent-color:#0878ed}.production-inactive td{background:#e5e7eb!important;color:#6b7280!important}.production-inactive input:disabled{background:#e5e7eb;color:#6b7280;opacity:1}.production-project-row td{background:#75a2d8;font-weight:700;color:#102438}.production-group-row td{background:#efb78d;font-weight:700;color:#102438}.production-subgroup-row td{background:#87b9d1;font-weight:700;color:#102438}.production-gantt .production-summary .production-bar{background:#17212c;border-color:#17212c;border-radius:0;height:8px;top:8px}.production-gantt .production-summary .production-track{background-color:#fff}.production-gantt-final h3{margin-bottom:4px}
@media print{
 @page{size:A3 landscape;margin:12mm}
 body:has(.production-open) *{visibility:hidden}
 body:has(.production-open) .production-gantt-final,body:has(.production-open) .production-gantt-final *{visibility:visible;print-color-adjust:exact;-webkit-print-color-adjust:exact}
 .production-open .production-gantt-final{position:absolute;left:0;top:0;width:100%;border:0;margin:0;padding:0}
 .production-open .production-gantt-final .table-scroll{overflow:visible}.production-open .production-gantt{min-width:0;width:100%;font-size:9px}.production-open .production-gantt td,.production-open .production-gantt th{padding:4px}.production-open .production-gantt td:first-child{min-width:180px}.production-open .production-gantt th:last-child,.production-open .production-gantt td:last-child{min-width:250px}.production-open .production-track{min-width:250px}.production-open .production-gantt tr{break-inside:avoid}
 .production-open aside,.production-open header,.production-open #productionActions,.production-open #productionTabs,.production-open button,.production-open .production-curve-card{display:none!important}
}

@media print{.production-open{display:block!important}.production-open main{width:100%}.production-open .production-project-fields,.production-open .projectbar,.production-open .production-head,.production-open #productionMessage,.production-open #productionBody>p,.production-open #productionProjectContent>:not(.production-gantt-final){display:none!important}.production-open .production-gantt-final{position:static}.production-open #content{padding:0}}

/* Sidebar regions share available height without absolute footer overlap. */
@media screen and (min-width:851px){
 .shell{grid-template-columns:clamp(190px,16vw,240px) minmax(0,1fr)}
 aside{display:flex;flex-direction:column;gap:clamp(12px,2vh,24px);height:100vh;height:100dvh;min-height:0;padding:clamp(14px,3vh,24px) 8px;overflow:hidden}
 aside .brand{flex:0 0 auto;padding:8px 20px 12px}
 aside nav{flex:1 1 auto;min-height:0;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:#52657a var(--nav)}
 aside nav button{flex-shrink:0;gap:10px;padding:clamp(9px,1.5vh,13px) 12px;font-size:14px;line-height:1.4;min-height:44px}
 aside nav button span{min-width:0;white-space:normal;overflow-wrap:break-word}
 .aside-foot{position:static;flex:0 0 auto;margin:0 12px;padding-top:12px;border-top:1px solid #ffffff24;line-height:1.5;font-size:14px;overflow-wrap:break-word}
}

/* Sidebar blue identifies only the current section. */
aside nav button.production-nav{background:transparent;border:0;border-radius:6px}
aside nav button.active,aside nav button.production-nav.active{background:var(--blue);color:#fff}
aside nav button:not(.active):hover{background:#ffffff14}
