:root{--blue:#51c1e5;--blue-dark:#217f9f;--orange:#f69f26;--ink:#273238;--muted:#737374;--line:#dfe7ea;--surface:#fff;--bg:#f4f7f8;--danger:#c84040;--success:#25956a}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:"Segoe UI",Segoe UI,Arial,sans-serif;color:var(--ink);background:var(--bg)}a{color:var(--blue-dark);text-decoration:none}button,input,select,textarea{font:inherit}
.topbar{height:76px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 28px;gap:18px;position:sticky;top:0;z-index:5}.topbar img{width:180px}.app-name{font-weight:800;font-size:18px;margin-right:10px}.portal-label{color:var(--muted);font-size:13px}.user-menu{margin-left:auto;display:flex;gap:18px;align-items:center;font-size:14px}
.app-shell{display:grid;grid-template-columns:240px 1fr;min-height:calc(100vh - 76px)}.sidebar{background:#25343a;padding:25px 14px;display:flex;flex-direction:column;gap:7px}.sidebar a{color:#dce9ed;padding:12px 14px;border-radius:9px}.sidebar a:hover{background:#354951;color:#fff}.content{padding:32px;max-width:1500px;width:100%}
.sidebar-copyright{margin-top:auto;padding:24px 14px 4px;color:#91a8b1;font-size:12px;text-align:center}.sidebar-copyright a{display:inline;padding:0;color:#b9d9e4}.sidebar-copyright a:hover{background:transparent;color:#fff}
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:24px}.page-head h1{margin:0;font-size:28px}.eyebrow{color:var(--orange);font-weight:800;text-transform:uppercase;letter-spacing:.09em;font-size:12px}.muted{color:var(--muted)}.card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:22px;box-shadow:0 8px 28px rgba(35,61,70,.05)}
.metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-bottom:22px}.metric{position:relative;overflow:hidden}.metric:before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--blue)}.metric.final:before{background:var(--success)}.metric.cancelled:before{background:var(--orange)}.metric strong{display:block;font-size:36px}.metric span{color:var(--muted)}
.chart{display:flex;align-items:flex-end;gap:12px;height:240px;padding:20px 0 34px}.bar{flex:1;background:linear-gradient(var(--blue),#a9e4f5);min-height:3px;border-radius:7px 7px 0 0;position:relative}.bar small{position:absolute;bottom:-24px;width:100%;text-align:center;color:var(--muted)}
.table-wrap{overflow:auto}.data-table{width:100%;border-collapse:collapse;background:#fff}.data-table th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:13px;border-bottom:2px solid var(--line)}.data-table td{padding:14px 13px;border-bottom:1px solid var(--line)}.data-table tr:hover td{background:#f8fbfc}
.badge{display:inline-flex;border-radius:99px;padding:5px 9px;background:#e8f7fc;color:var(--blue-dark);font-size:12px;font-weight:700}.badge.final{background:#e5f6ef;color:#187951}.badge.cancelled{background:#fff0de;color:#a45c00}
.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);background:#fff;border-radius:9px;padding:10px 15px;font-weight:700;cursor:pointer}.btn.primary{background:var(--blue-dark);color:#fff;border-color:var(--blue-dark)}.btn.orange{background:var(--orange);color:#fff;border-color:var(--orange)}.actions{display:flex;gap:8px;flex-wrap:wrap}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.form-grid .wide{grid-column:1/-1}label{display:flex;flex-direction:column;gap:7px;font-weight:650;font-size:13px}input,select,textarea{width:100%;border:1px solid #cfdadd;border-radius:8px;background:#fff;padding:10px 11px;color:var(--ink)}input:focus,select:focus,textarea:focus{outline:3px solid rgba(81,193,229,.2);border-color:var(--blue-dark)}.form-section{grid-column:1/-1;margin-top:8px;padding-top:18px;border-top:1px solid var(--line)}.form-section h2{font-size:17px;margin:0}.validation{color:var(--danger);font-size:13px}
.login-page{display:grid;place-items:start center;padding:9vh 24px 40px;background:radial-gradient(circle at 20% 10%,#dff6fc 0,transparent 36%),radial-gradient(circle at 90% 90%,#fff0d8 0,transparent 32%),#f7fafb}.login-card{width:min(500px,100%);background:#fff;padding:42px;border-radius:20px;box-shadow:0 25px 70px rgba(31,73,88,.14)}.login-logo{display:block;width:380px;max-width:100%;margin:0 auto 28px}.login-card>.eyebrow,.login-card>h1,.login-card>.muted{text-align:center}.login-card h1{margin:5px 0 7px}.form-stack{display:flex;flex-direction:column;gap:17px;margin-top:26px}
.filters{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;margin-bottom:20px}.filters label{min-width:170px}
.cause-maintenance{padding:0;overflow:hidden}.cause-grid{display:grid;grid-template-columns:90px minmax(680px,1fr) 160px 110px;gap:12px;align-items:center;padding:13px 18px;border-bottom:1px solid var(--line)}.cause-grid:last-child{border-bottom:0}.cause-grid-head{background:#f2f6f7;color:var(--muted);font-size:12px;font-weight:750;text-transform:uppercase;letter-spacing:.05em}.cause-grid input[readonly]{background:#eef2f3;color:var(--muted)}.cause-new-row{background:#fbfdfe}.uppercase-input{text-transform:uppercase}
.login-footer{text-align:center;margin:22px 0 0;color:var(--muted);font-size:12px}.forgot-link{text-align:right;font-size:13px;margin-top:-7px}.signature-saved{display:flex;align-items:center;gap:14px;padding:10px;border:1px solid var(--line);border-radius:9px;background:#f8fbfc}.signature-saved img{width:120px;height:70px;object-fit:contain;background:#fff;border:1px solid var(--line)}
.success-message{margin:0 0 18px;padding:13px 16px;border:1px solid #a8dcc7;border-radius:10px;background:#e9f7f1;color:#176b4b;font-weight:650}.readonly-company input:disabled{background:#e8edef;color:#536168;opacity:1;border-color:#cbd5d9}
.copy-address-btn{border-color:#dce4e7;background:#fbfcfd}.copy-address-btn:hover{border-color:#cbd6da;background:#f6f9fa;box-shadow:none}
.page-head-actions{justify-content:flex-end}.grid-card,.expanded-grid-card{padding:0;overflow:hidden}.grid-toolbar{position:relative;display:flex;align-items:center;gap:18px;padding:12px 16px;border-bottom:1px solid var(--line);background:#f8fbfc}.grid-toolbar>[data-grid-count]{order:1;color:var(--muted);white-space:nowrap;font-size:13px}.grid-toolbar>.actions,.grid-toolbar>[data-export-grid]{order:2;margin-left:auto}.compact-grid-wrap,.expanded-grid-wrap{max-height:34vh}.expanded-grid{width:max-content;min-width:100%}.expanded-grid th{position:sticky;top:0;z-index:2;background:#edf3f5;white-space:nowrap}.expanded-grid .grid-filter-row th{top:42px;padding:7px;z-index:3;background:#f7fafb}.grid-filter-row input{min-width:105px;padding:7px 8px;font-size:12px;font-weight:400;text-transform:none;letter-spacing:normal}.expanded-grid td{max-width:260px;min-width:110px;white-space:normal;vertical-align:top}.data-table tr[hidden]{display:none}.sortable-heading{cursor:pointer;user-select:none}.sortable-heading:hover{background:#e5eef1}.sort-indicator{display:inline-block;width:12px;margin-left:6px;color:var(--blue-dark)}.sort-asc .sort-indicator:after{content:"▲"}.sort-desc .sort-indicator:after{content:"▼"}.sortable-heading.dragging{opacity:.45}.column-hidden{display:none!important}.column-picker{position:absolute;z-index:10;top:calc(100% - 5px);right:16px;width:min(580px,calc(100vw - 60px));padding:16px;border:1px solid var(--line);border-radius:10px;background:#fff;box-shadow:0 18px 45px rgba(35,61,70,.18)}.column-picker-head{display:flex;justify-content:space-between;gap:12px;margin-bottom:12px}.link-button{padding:0;border:0;background:transparent;color:var(--blue-dark);font-weight:700;cursor:pointer}.column-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 16px;max-height:260px;overflow:auto}.column-options label{display:flex;flex-direction:row;align-items:center;font-weight:500}.column-options input{width:auto}.grid-pagination{display:flex;align-items:center;justify-content:center;gap:16px;padding:11px 16px;border-top:1px solid var(--line);background:#fff}.grid-pagination .btn{padding:7px 12px}.grid-pagination span{font-size:13px;color:var(--muted)}
.actions-heading{text-align:right!important}.row-actions{justify-content:flex-end}.measurement-grid{display:grid;grid-template-columns:70px repeat(3,minmax(0,1fr));gap:14px;padding:16px;background:#f5f9fa;border:1px solid var(--line);border-radius:10px;align-items:end}.measurement-number{align-self:center;color:var(--blue-dark);font-size:15px}.optional-label{display:inline-flex;margin-left:8px;padding:3px 8px;border-radius:99px;background:#e8f0f2;color:var(--muted);font-size:11px;font-weight:650}.signature-installation{display:flex;flex-direction:column;gap:7px;font-weight:650;font-size:13px}.signature-installation img{width:180px;height:95px;object-fit:contain;background:#fff;border:1px solid var(--line);border-radius:8px}.confirm-dialog{width:min(560px,calc(100% - 30px));border:0;border-radius:18px;padding:30px;box-shadow:0 30px 90px rgba(20,45,55,.3);text-align:center}.confirm-dialog::backdrop{background:rgba(20,34,40,.55);backdrop-filter:blur(3px)}.confirm-dialog h2{margin:10px 0}.confirm-dialog p{color:var(--muted);line-height:1.5}.confirm-dialog .actions{justify-content:center;margin-top:24px}.confirm-icon{display:grid;place-items:center;width:52px;height:52px;margin:auto;border-radius:50%;background:#fff0dc;color:#b96800;font-weight:800;font-size:24px}.unsaved-actions{flex-wrap:nowrap}
.readonly-installation{display:flex;flex-direction:column;gap:0}.readonly-installation h2{margin:28px 0 12px;padding-bottom:8px;border-bottom:1px solid var(--line);font-size:17px}.readonly-summary,.readonly-data-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.readonly-summary{grid-template-columns:repeat(4,minmax(0,1fr));padding:14px;border-radius:10px;background:#f5f9fa}.readonly-summary>div,.readonly-data-grid>div{display:flex;flex-direction:column;gap:5px}.readonly-data-grid>div{min-height:66px;padding:12px;border:1px solid var(--line);border-radius:9px;background:#fbfcfd}.readonly-data-grid .wide{grid-column:1/-1}.readonly-summary span,.readonly-data-grid span,.readonly-measurements span{color:var(--muted);font-size:12px;font-weight:650}.readonly-data-grid strong{white-space:pre-wrap}.readonly-measurements{display:grid;grid-template-columns:70px repeat(3,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:9px;overflow:hidden}.readonly-measurements>*{display:flex;flex-direction:column;justify-content:center;gap:5px;min-height:62px;padding:12px;background:#fff}.readonly-measurements>strong{align-items:center;color:var(--blue-dark);background:#f5f9fa}.readonly-signature{width:180px;height:95px;object-fit:contain}
@media(max-width:850px){.app-shell{grid-template-columns:1fr}.sidebar{display:none}.content{padding:20px}.topbar{padding:0 16px}.topbar img{width:130px}.portal-label,.user-menu span{display:none}.metrics,.form-grid{grid-template-columns:1fr}.cause-maintenance{padding:12px}.cause-grid-head{display:none}.cause-grid{grid-template-columns:70px minmax(0,1fr);padding:12px 0;gap:10px}.cause-grid select,.cause-grid button{grid-column:auto}.cause-grid input:nth-child(2){grid-column:2}.page-head{align-items:flex-start;flex-direction:column}.filters{align-items:stretch}.filters label{width:100%;min-width:0}.actions{width:100%}.measurement-grid{grid-template-columns:55px minmax(0,1fr)}.measurement-grid label{grid-column:2}.measurement-number{grid-column:1;grid-row:auto / span 3}.row-actions{justify-content:flex-start}.confirm-dialog .actions{flex-direction:column}.confirm-dialog .btn{width:100%}.page-head-actions{justify-content:flex-start}.page-head-actions .btn,.page-head-actions form,.page-head-actions form .btn{width:100%}.grid-toolbar{align-items:stretch;flex-direction:column}.grid-toolbar>[data-grid-count]{margin-left:0}.column-picker{position:fixed;top:100px;left:20px;width:calc(100vw - 40px)}.column-options{grid-template-columns:1fr}.compact-grid-wrap,.expanded-grid-wrap{max-height:42vh}.readonly-summary,.readonly-data-grid{grid-template-columns:1fr}.readonly-summary{padding:12px}.readonly-data-grid .wide{grid-column:auto}.readonly-measurements{grid-template-columns:55px minmax(0,1fr)}.readonly-measurements>strong{grid-row:auto / span 3}.readonly-measurements>div{grid-column:2}}
