:root{--ink: #122534;--ink-2: #1B3A4E;--ink-3: #274A61;--paper: #EEF1EF;--card: #FFFFFF;--line: #DDE3E1;--text: #16232B;--text-dim: #5B6E77;--brand: #0E7C86;--brand-dark: #0A5A62;--orange: #E2571C;--orange-tint: #FCE8DF;--teal: #1E8A72;--teal-tint: #E1F2EC;--amber: #C98A12;--amber-tint: #FBF0DA;--grey-tint: #EEEEEC;--radius: 10px;--font-heading: "Space Grotesk", sans-serif;--font-body: "Inter", sans-serif;--font-mono: "IBM Plex Mono", monospace}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:15px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-body);color:var(--text);background:var(--paper);line-height:1.5}a{color:inherit;text-decoration:none}ul,ol{list-style:none}img{max-width:100%;display:block}button{cursor:pointer;font-family:inherit;font-size:inherit}table{border-collapse:collapse;width:100%}.app{display:grid;grid-template-columns:236px 1fr;min-height:100vh}.sidebar{background:var(--ink);color:#fff;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto;z-index:10}.sidebar-brand{padding:22px 20px 14px;border-bottom:1px solid var(--ink-2)}.sidebar-brand h1{font-family:var(--font-heading);font-size:1.35rem;font-weight:700;color:#fff;letter-spacing:-.3px}.sidebar-brand .subtitle{font-size:.7rem;color:#7b949e;text-transform:uppercase;letter-spacing:.12em;margin-top:2px;font-weight:500}.sidebar-nav{flex:1;padding:12px 0;display:flex;flex-direction:column;gap:2px}.sidebar-nav a{display:flex;align-items:center;gap:10px;padding:10px 20px;color:#a8bbc4;font-size:.875rem;font-weight:500;border-left:3px solid transparent;transition:all .15s ease;letter-spacing:.01em}.sidebar-nav a:hover{color:#fff;background:#ffffff0a;border-left-color:var(--ink-3)}.sidebar-nav a.active{color:#fff;background:#ffffff12;border-left-color:var(--orange);font-weight:600}.sidebar-divider{padding:18px 20px 8px;font-size:.65rem;color:#5b7a88;text-transform:uppercase;letter-spacing:.12em;font-weight:700;cursor:default;-webkit-user-select:none;user-select:none}.sidebar-nav a.nav-indent{padding-left:34px;font-size:.82rem}.sidebar-nav a .nav-icon{font-size:1.05rem;width:22px;text-align:center;flex-shrink:0}.sidebar-footer{padding:14px 20px;border-top:1px solid var(--ink-2);font-size:.7rem;color:#6b828e;line-height:1.6}.sidebar-footer .name{color:#c4d2d9;font-weight:600}.main-content{padding:28px 32px;overflow-x:auto;background:var(--paper)}.page-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:24px;flex-wrap:wrap;gap:12px}.page-header .breadcrumb{font-size:.75rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.06em;font-weight:500;margin-bottom:4px}.page-header h2{font-family:var(--font-heading);font-size:1.6rem;font-weight:700;color:var(--ink);letter-spacing:-.4px}.page-header-actions{display:flex;gap:8px;align-items:center}.kpi-row{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}.kpi-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;display:flex;flex-direction:column;gap:6px;transition:box-shadow .15s ease}.kpi-card:hover{box-shadow:0 3px 12px #0000000f}.kpi-card .kpi-label{font-size:.72rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.06em;font-weight:600}.kpi-card .kpi-value{font-family:var(--font-mono);font-size:1.65rem;font-weight:600;color:var(--ink);letter-spacing:-.02em}.kpi-card .kpi-delta{font-size:.78rem;font-weight:500}.kpi-delta.up{color:var(--teal)}.kpi-delta.down{color:var(--orange)}.table-wrap{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.table-wrap table{width:100%;border-collapse:collapse}.table-wrap th{font-size:.7rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.06em;font-weight:600;text-align:left;padding:12px 16px;background:var(--grey-tint);border-bottom:1px solid var(--line)}.table-wrap td{padding:11px 16px;font-size:.85rem;border-bottom:1px solid var(--line);color:var(--text);vertical-align:middle}.table-wrap tr:last-child td{border-bottom:none}.table-wrap tr:hover td{background:#f8faf8}.stamp-badge{display:inline-block;padding:4px 10px;border-radius:4px;font-size:.7rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;border:1.5px solid;transform:rotate(-1deg);box-shadow:0 1px 2px #0000000d}.stamp-badge.progress{color:var(--brand);background:#e5f3f4;border-color:var(--brand)}.stamp-badge.overdue{color:var(--orange);background:var(--orange-tint);border-color:var(--orange)}.stamp-badge.pending{color:var(--amber);background:var(--amber-tint);border-color:var(--amber)}.stamp-badge.paid{color:var(--teal);background:var(--teal-tint);border-color:var(--teal)}.stamp-badge.open{color:var(--brand-dark);background:#e5f3f4;border-color:var(--brand)}.stamp-badge.received{color:var(--teal);background:var(--teal-tint);border-color:var(--teal)}.status-bar{width:100%;height:6px;background:var(--line);border-radius:3px;overflow:hidden;margin-top:4px}.status-bar-fill{height:100%;border-radius:3px;transition:width .3s ease}.status-bar-fill.healthy{background:var(--teal)}.status-bar-fill.low{background:var(--amber)}.status-bar-fill.critical{background:var(--orange)}.panel-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:24px}.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.panel-header{padding:14px 18px;font-family:var(--font-heading);font-size:.85rem;font-weight:600;color:var(--ink);border-bottom:1px solid var(--line);background:#fafbfa;letter-spacing:-.01em}.panel-body{padding:0}.panel-body table{width:100%}.panel-body th{font-size:.68rem;padding:10px 14px;background:transparent;border-bottom:1px solid var(--line)}.panel-body td{padding:9px 14px;font-size:.8rem}.job-ticket{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.job-ticket .ticket-perf{height:10px;background:repeating-linear-gradient(90deg,var(--line) 0px,var(--line) 6px,transparent 6px,transparent 12px);border-bottom:1px solid var(--line)}.job-ticket .ticket-header{display:grid;grid-template-columns:1fr 1fr;gap:20px;padding:20px 24px;border-bottom:1px solid var(--line);background:#fafbfa}.ticket-header .header-col h3{font-family:var(--font-heading);font-size:1.1rem;font-weight:700;color:var(--ink);margin-bottom:6px}.ticket-header .header-col p{font-size:.8rem;color:var(--text-dim);line-height:1.5}.ticket-body{padding:0}.ticket-body table th{font-size:.7rem;background:var(--grey-tint);padding:10px 20px}.ticket-body table td{padding:10px 20px;font-size:.83rem}.ticket-footer{display:flex;justify-content:space-between;align-items:center;padding:14px 24px;border-top:1px solid var(--line);background:#fafbfa;font-family:var(--font-mono);font-size:.82rem;font-weight:500}.ticket-footer .cost-label{color:var(--text-dim);margin-right:8px}.ticket-footer .cost-value{color:var(--ink);font-weight:600}.timeline{position:relative;padding-left:28px}.timeline:before{content:"";position:absolute;left:8px;top:4px;bottom:4px;width:2px;background:var(--line);border-radius:1px}.timeline-item{position:relative;padding-bottom:20px}.timeline-item:last-child{padding-bottom:0}.timeline-item:before{content:"";position:absolute;left:-20px;top:6px;width:10px;height:10px;border-radius:50%;background:var(--card);border:2px solid var(--brand);z-index:1}.timeline-item .tl-date{font-size:.7rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em;font-weight:500;margin-bottom:2px}.timeline-item .tl-title{font-weight:600;font-size:.85rem;color:var(--text)}.timeline-item .tl-desc{font-size:.78rem;color:var(--text-dim);margin-top:2px}.filter-chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:20px}.chip{padding:6px 16px;border-radius:20px;font-size:.78rem;font-weight:500;border:1px solid var(--line);background:var(--card);color:var(--text-dim);cursor:pointer;transition:all .15s ease;font-family:var(--font-body)}.chip:hover{border-color:var(--brand);color:var(--brand)}.chip.active{background:var(--brand);color:#fff;border-color:var(--brand);font-weight:600}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 18px;border-radius:var(--radius);font-size:.82rem;font-weight:600;transition:all .15s ease;border:1px solid transparent;font-family:var(--font-body);letter-spacing:.01em}.btn-primary{background:var(--orange);color:#fff;border-color:var(--orange)}.btn-primary:hover{background:#c94b18;border-color:#c94b18}.btn-secondary{background:var(--card);color:var(--text);border-color:var(--line)}.btn-secondary:hover{background:var(--grey-tint);border-color:#c8cdca}.btn-sm{padding:5px 12px;font-size:.72rem;border-radius:6px}.search-box{display:flex;align-items:center;gap:8px;padding:8px 14px;border:1px solid var(--line);border-radius:var(--radius);background:var(--card);font-size:.82rem;transition:border-color .15s ease}.search-box:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px #0e7c8614}.search-box input{border:none;outline:none;font-family:var(--font-body);font-size:.82rem;color:var(--text);background:transparent;flex:1}.search-box input::placeholder{color:var(--text-dim)}.tab-row{display:flex;gap:0;border-bottom:2px solid var(--line);margin-bottom:20px}.tab{padding:10px 20px;font-size:.82rem;font-weight:500;color:var(--text-dim);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .15s ease;background:none;border-top:none;border-left:none;border-right:none;font-family:var(--font-body)}.tab:hover{color:var(--text)}.tab.active{color:var(--brand);border-bottom-color:var(--brand);font-weight:600}.state-box{display:flex;align-items:center;justify-content:center;padding:48px 24px;font-size:.9rem;color:var(--text-dim);background:var(--card);border:1px solid var(--line);border-radius:var(--radius);text-align:center}.state-box.error{color:var(--orange);border-color:var(--orange-tint);background:#fff8f5}.spinner{display:inline-block;width:24px;height:24px;border:3px solid var(--line);border-top-color:var(--brand);border-radius:50%;animation:spin .7s linear infinite;margin-right:10px;vertical-align:middle}@keyframes spin{to{transform:rotate(360deg)}}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:20px}.col-panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.col-panel .col-panel-header{padding:14px 18px;font-family:var(--font-heading);font-size:.85rem;font-weight:600;color:var(--ink);border-bottom:1px solid var(--line);background:#fafbfa}.col-panel .col-panel-body{padding:0;max-height:420px;overflow-y:auto}.col-panel .col-panel-body table th{position:sticky;top:0;z-index:1}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.text-right{text-align:right}.text-center{text-align:center}.text-green{color:var(--teal)}.text-orange{color:var(--orange)}.text-dim{color:var(--text-dim)}.font-bold{font-weight:600}.mt-1{margin-top:4px}.mt-2{margin-top:8px}.mb-1{margin-bottom:4px}.mb-2{margin-bottom:8px}.mb-3{margin-bottom:16px}.gap-2{gap:8px}.flex{display:flex}.items-center{align-items:center}.justify-between{justify-content:space-between}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--paper)}::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#c0c6c3}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .2s ease}.modal-card{background:#fff;border-radius:12px;padding:32px;min-width:480px;max-width:90vw;max-height:85vh;overflow-y:auto;box-shadow:0 20px 60px #0000004d;animation:slideUp .25s ease}.modal-card h2{margin-top:0;font-family:Space Grotesk,sans-serif;font-size:1.35rem;margin-bottom:20px}.modal-close{position:absolute;top:12px;right:16px;background:none;border:none;font-size:1.5rem;cursor:pointer;color:#999}.modal-close:hover{color:#333}.modal-card{position:relative}.form-group{margin-bottom:16px}.form-group label{display:block;font-size:.8rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:#666;margin-bottom:4px}.form-group input,.form-group select,.form-group textarea{width:100%;padding:10px 12px;border:1.5px solid #ddd;border-radius:6px;font-family:Inter,sans-serif;font-size:.9rem;transition:border-color .2s}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:#c9a84c}.modal-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:24px}.modal-actions .btn{padding:10px 24px}.btn-cancel{background:#f0f0f0;color:#333;border:none;border-radius:6px;font-size:.9rem;cursor:pointer}.btn-cancel:hover{background:#e0e0e0}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--ink);padding:24px}.login-card{background:var(--card);border-radius:var(--radius);padding:40px 36px;width:100%;max-width:400px;box-shadow:0 20px 60px #0006}.login-brand{text-align:center;margin-bottom:32px}.login-brand h1{font-family:var(--font-heading);font-size:1.6rem;font-weight:700;color:var(--ink);letter-spacing:-.3px}.login-subtitle{font-size:.7rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.12em;margin-top:4px;font-weight:500}.login-form .form-group{margin-bottom:18px}.login-form .form-group label{display:block;font-size:.78rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-dim);margin-bottom:6px}.login-form .form-group input{width:100%;padding:12px 14px;border:1.5px solid var(--line);border-radius:6px;font-family:var(--font-body);font-size:.95rem;transition:border-color .2s;background:#fafbfa}.login-form .form-group input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px #0e7c8614;background:#fff}.login-error{background:var(--orange-tint);color:var(--orange);font-size:.82rem;padding:10px 14px;border-radius:6px;margin-bottom:16px;font-weight:500}.login-btn{width:100%;justify-content:center;padding:12px 0;font-size:.92rem}.login-footer{text-align:center;margin-top:24px;font-size:.7rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.06em}.sidebar-logout{display:block;width:100%;margin-top:10px;padding:6px 0;background:#ffffff0f;border:1px solid var(--ink-2);border-radius:5px;color:#a8bbc4;font-family:var(--font-body);font-size:.72rem;font-weight:500;cursor:pointer;transition:all .15s ease}.sidebar-logout:hover{background:#ffffff1f;color:#fff;border-color:var(--orange)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}
