:root{--ink: #1B3A5C;--ink-dark: #10263D;--ink-tint: #E7EEF3;--paper: #F4F6F5;--card: #FFFFFF;--line: #DCE2E4;--line-strong:#B9C4C8;--graphite: #262B2E;--slate: #64727A;--brass: #B8863B;--brass-tint: #F3E6CC;--teal: #3E7D6C;--teal-tint: #DDEDE8;--clay: #BF5330;--clay-tint: #F5DFD5;--amber: #C99A3E;--amber-tint: #F6ECD6;--font-display:"Space Grotesk", sans-serif;--font-body: "IBM Plex Sans", sans-serif;--font-mono: "IBM Plex Mono", monospace;--radius: 3px}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font-body);color:var(--graphite);background:var(--paper);background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:28px 28px;background-position:-1px -1px;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{font-family:var(--font-display);margin:0;letter-spacing:.01em}p{margin:0}button{font-family:var(--font-body);cursor:pointer}.ticks{position:relative}.ticks:before,.ticks:after{content:"";position:absolute;width:9px;height:9px;pointer-events:none}.ticks:before{top:-1px;left:-1px;border-top:1.5px solid var(--ink);border-left:1.5px solid var(--ink)}.ticks:after{bottom:-1px;right:-1px;border-bottom:1.5px solid var(--ink);border-right:1.5px solid var(--ink)}.auth-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:32px 16px}.auth-card{width:100%;max-width:420px;background:var(--card);border:1px solid var(--ink);padding:32px 30px 28px;position:relative}.auth-brand{display:flex;align-items:center;gap:10px;margin-bottom:22px}.auth-brand .brand-name{font-family:var(--font-display);font-weight:700;font-size:18px;color:var(--ink)}.auth-brand .brand-sub{font-family:var(--font-mono);font-size:9.5px;color:var(--slate);letter-spacing:.12em;margin-top:2px}.auth-title{font-size:20px;color:var(--ink);margin-bottom:6px}.auth-subtitle{font-size:13px;color:var(--slate);margin-bottom:24px;line-height:1.5}.field{margin-bottom:16px}.field label{display:block;font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;color:var(--slate);text-transform:uppercase;margin-bottom:6px}.field input{width:100%;padding:10px 12px;border:1px solid var(--line-strong);border-radius:var(--radius);font-family:var(--font-body);font-size:14px;background:var(--paper);color:var(--graphite)}.field input:focus{outline:none;border-color:var(--ink);background:var(--card)}.field-error{color:var(--clay);font-size:11.5px;margin-top:5px}.field-hint{color:var(--slate);font-size:11px;margin-top:5px}.btn-primary{width:100%;padding:11px 16px;background:var(--ink);color:#fff;border:none;border-radius:var(--radius);font-size:13.5px;font-weight:600;letter-spacing:.02em}.btn-primary:hover{background:var(--ink-dark)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.auth-links{margin-top:18px;display:flex;justify-content:space-between;font-size:12.5px}.auth-links a{color:var(--ink);text-decoration:none}.auth-links a:hover{text-decoration:underline}.auth-footer{margin-top:22px;text-align:center;font-size:12.5px;color:var(--slate)}.auth-footer a{color:var(--brass);font-weight:600;text-decoration:none}.auth-footer a:hover{text-decoration:underline}.banner{padding:10px 14px;border-radius:var(--radius);font-size:13px;margin-bottom:18px;line-height:1.5}.banner.error{background:var(--clay-tint);color:var(--clay);border:1px solid var(--clay)}.banner.success{background:var(--teal-tint);color:var(--teal);border:1px solid var(--teal)}.password-strength{display:flex;gap:4px;margin-top:8px}.password-strength span{flex:1;height:3px;background:var(--line);border-radius:2px}.password-strength span.filled.weak{background:var(--clay)}.password-strength span.filled.medium{background:var(--amber)}.password-strength span.filled.strong{background:var(--teal)}.app-shell{display:flex;min-height:100vh}.mobile-topbar,.sidebar-overlay{display:none}.sidebar{width:220px;flex-shrink:0;background:var(--ink-dark);color:#fff;display:flex;flex-direction:column;padding:22px 0;overflow-y:auto}.sidebar-brand{padding:0 20px 22px;border-bottom:1px solid rgba(255,255,255,.12);margin-bottom:14px}.sidebar-brand .brand-name{font-family:var(--font-display);font-weight:700;font-size:16px;color:#fff}.sidebar-brand .brand-sub{font-family:var(--font-mono);font-size:9px;color:#8ea9bc;letter-spacing:.12em;margin-top:2px}.sidebar-nav{display:flex;flex-direction:column;gap:2px;flex:1}.sidebar-nav-group{margin-bottom:6px}.sidebar-nav-group-label{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:#6e8398;padding:14px 20px 6px}.sidebar-nav a{display:block;padding:10px 20px;color:#b7c6d3;text-decoration:none;font-size:13.5px;border-left:3px solid transparent}.sidebar-nav a:hover{background:#ffffff0f;color:#fff}.sidebar-nav a.active{background:#ffffff14;color:#fff;border-left-color:var(--brass);font-weight:600}.sidebar-footer{padding:14px 20px 0;border-top:1px solid rgba(255,255,255,.12);margin-top:14px}.sidebar-user-name{font-size:13px;font-weight:600;color:#fff}.sidebar-user-role{font-size:11px;color:#8ea9bc;margin-top:2px}.sidebar-logout{margin-top:10px;width:100%;background:transparent;border:1px solid rgba(255,255,255,.2);color:#b7c6d3;padding:7px 10px;border-radius:var(--radius);font-size:12px}.sidebar-logout:hover{background:#ffffff14;color:#fff}.app-main{flex:1;padding:32px 40px;max-width:1200px;min-width:0}.page-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:24px;gap:16px;flex-wrap:wrap}.page-title{font-size:22px;color:var(--ink)}.page-subtitle{font-size:13px;color:var(--slate);margin-top:4px}@media (max-width:860px){.app-shell{display:block}.mobile-topbar{display:flex;align-items:center;justify-content:space-between;background:var(--ink-dark);color:#fff;padding:12px 16px;position:sticky;top:0;z-index:30}.mobile-topbar-brand{font-family:var(--font-display);font-weight:700;font-size:14px;letter-spacing:.02em}.hamburger-btn{background:none;border:none;color:#fff;padding:4px;line-height:0}.sidebar-overlay{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#10263d73;z-index:35}.sidebar{position:fixed;top:0;left:0;height:100vh;width:250px;z-index:40;transform:translate(-100%);transition:transform .22s ease;overflow-y:auto}.sidebar.open{transform:translate(0);box-shadow:4px 0 24px #00000059}.app-main{padding:20px 16px 48px}}@media (max-width:640px){.page-title{font-size:19px}.page-header{margin-bottom:18px}.panel{padding:16px 14px;margin-bottom:18px}.auth-card{padding:26px 20px 24px}.time-range{flex-wrap:wrap}.time-range .field{min-width:110px}}.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:22px 24px;margin-bottom:24px}.panel-title{font-size:14px;color:var(--ink);margin-bottom:16px;font-weight:600}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px 20px}.form-grid .field-full{grid-column:1 / -1}@media (max-width:640px){.form-grid{grid-template-columns:1fr}}.field textarea{width:100%;padding:10px 12px;border:1px solid var(--line-strong);border-radius:var(--radius);font-family:var(--font-body);font-size:14px;background:var(--paper);color:var(--graphite);resize:vertical}.field select{width:100%;padding:10px 12px;border:1px solid var(--line-strong);border-radius:var(--radius);font-family:var(--font-body);font-size:14px;background:var(--paper);color:var(--graphite)}.field textarea:focus,.field select:focus{outline:none;border-color:var(--ink);background:var(--card)}.btn-secondary{padding:9px 16px;background:transparent;color:var(--ink);border:1px solid var(--ink);border-radius:var(--radius);font-size:13px;font-weight:600}.btn-secondary:hover{background:var(--ink-tint)}.form-actions{display:flex;gap:10px;margin-top:6px;grid-column:1/-1}.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}.table-scroll .data-table{min-width:640px}.table-scroll.fixed-height{max-height:480px;overflow-y:auto}.table-scroll.fixed-height .data-table thead th{position:sticky;top:0;background:var(--card);z-index:1}.data-table{width:100%;border-collapse:collapse;font-size:13px}.data-table th{text-align:left;font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--slate);padding:9px 10px;border-bottom:1.5px solid var(--ink)}.data-table td{padding:11px 10px;border-bottom:1px solid var(--line);color:var(--graphite);vertical-align:middle}.data-table tr:last-child td{border-bottom:none}.data-table tbody tr:hover{background:var(--paper)}.data-table tbody tr.row-clickable{cursor:pointer}.data-table tbody tr.row-clickable:hover{background:var(--ink-tint)}.empty-row td{text-align:center;color:var(--slate);padding:26px 10px}fieldset:disabled{opacity:.75}fieldset:disabled .field select,fieldset:disabled .field input,fieldset:disabled .field textarea{background:var(--line);cursor:not-allowed}.pill{display:inline-block;padding:3px 9px;border-radius:12px;font-size:11px;font-weight:600;font-family:var(--font-mono);letter-spacing:.02em}.pill.stage{background:var(--ink-tint);color:var(--ink)}.pill.priority-low{background:var(--teal-tint);color:var(--teal)}.pill.priority-medium{background:var(--amber-tint);color:var(--amber)}.pill.priority-high{background:var(--clay-tint);color:var(--clay)}.pill.status-active{background:var(--teal-tint);color:var(--teal)}.pill.status-disabled{background:var(--clay-tint);color:var(--clay)}.pill.role{background:var(--brass-tint);color:var(--brass)}.checkbox-cell{display:flex;align-items:center;justify-content:center}.checkbox-cell input{width:16px;height:16px;accent-color:var(--teal);cursor:pointer}.link-btn{background:none;border:none;color:var(--ink);font-size:12.5px;cursor:pointer;padding:0}.link-btn:hover{text-decoration:underline}.link-btn.danger{color:var(--clay)}.select-inline{padding:5px 8px;border:1px solid var(--line-strong);border-radius:var(--radius);font-size:12.5px;background:var(--paper);color:var(--graphite)}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin-bottom:24px}.stat-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px}.stat-card .stat-value{font-family:var(--font-display);font-size:24px;color:var(--ink);font-weight:700}.stat-card .stat-label{font-size:10.5px;color:var(--slate);text-transform:uppercase;letter-spacing:.07em;font-family:var(--font-mono);margin-top:6px}.stat-card.warn .stat-value{color:var(--amber)}.stat-card.danger .stat-value{color:var(--clay)}.progress-track{background:var(--line);border-radius:4px;height:7px;overflow:hidden;width:100%}.progress-fill{height:100%;background:var(--teal);border-radius:4px}.progress-fill.warn{background:var(--amber)}.progress-fill.danger{background:var(--clay)}.pill.status-pending{background:var(--amber-tint);color:var(--amber)}.pill.status-approved{background:var(--teal-tint);color:var(--teal)}.pill.status-rejected{background:var(--clay-tint);color:var(--clay)}.completion-cell{text-align:center;font-family:var(--font-mono);font-size:12px}.completion-cell.complete{color:var(--teal)}.completion-cell.in-progress{color:var(--amber)}.completion-cell.not-started{color:var(--line-strong)}.stage-board{display:grid;grid-template-columns:repeat(6,minmax(190px,1fr));gap:12px;overflow-x:auto;padding-bottom:8px}.stage-column{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:12px;min-width:190px}.stage-column-title{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--slate);margin-bottom:10px;display:flex;justify-content:space-between}.stage-card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:9px 10px;margin-bottom:8px;font-size:12.5px;cursor:pointer}.stage-card:hover{border-color:var(--ink);background:var(--ink-tint)}.stage-card .stage-card-code{font-family:var(--font-mono);font-size:10px;color:var(--brass);font-weight:600}.stage-card .stage-card-name{margin-top:3px;color:var(--graphite)}.stage-empty{font-size:11.5px;color:var(--line-strong);text-align:center;padding:10px 0}@media (max-width:860px){.stage-board{grid-template-columns:repeat(6,minmax(160px,1fr))}}.searchable-select{position:relative;width:100%}.searchable-select-trigger{width:100%;padding:10px 12px;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--paper);color:var(--graphite);font-family:var(--font-body);font-size:14px;display:flex;align-items:center;justify-content:space-between;gap:8px;text-align:left}.searchable-select-trigger:hover{border-color:var(--ink)}.searchable-select-trigger:disabled{opacity:.6;cursor:not-allowed}.searchable-select-trigger .placeholder{color:var(--slate)}.searchable-select-trigger svg{flex-shrink:0;color:var(--slate)}.searchable-select-panel{position:absolute;top:0;left:0;right:0;z-index:20;background:var(--card);border:1px solid var(--ink);border-radius:var(--radius);box-shadow:0 6px 20px #10263d2e}.searchable-select-panel input{width:100%;padding:10px 12px;border:none;border-bottom:1px solid var(--line);font-family:var(--font-body);font-size:14px;background:transparent;color:var(--graphite)}.searchable-select-panel input:focus{outline:none}.searchable-select-list{max-height:220px;overflow-y:auto}.searchable-select-option{padding:9px 12px;font-size:13.5px;cursor:pointer}.searchable-select-option:hover,.searchable-select-option.highlighted{background:var(--ink-tint)}.searchable-select-option.selected{font-weight:600;color:var(--ink)}.searchable-select-hint{font-size:11px;color:var(--slate);margin-top:1px}.searchable-select-empty{padding:12px;font-size:12.5px;color:var(--slate);text-align:center}.segmented{display:flex;gap:6px;margin-bottom:18px}.segmented button{flex:1;padding:10px 12px;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--paper);color:var(--slate);font-size:13px;font-weight:600}.segmented button.active{background:var(--ink);border-color:var(--ink);color:#fff}.time-range{display:flex;align-items:center;gap:8px}.time-range .field{flex:1;margin-bottom:0}.time-range-sep{color:var(--slate);font-size:12px;padding-top:20px}.stage-entry-table td{padding:8px}.stage-entry-table select,.stage-entry-table input{width:100%;padding:7px 9px;border:1px solid var(--line-strong);border-radius:var(--radius);font-family:var(--font-body);font-size:13px;background:var(--paper);color:var(--graphite)}.stage-entry-table select:disabled,.stage-entry-table input:disabled{background:var(--line);opacity:.6;cursor:not-allowed}.stage-entry-table tr.stage-row-disabled td{color:var(--slate)}.stage-entry-table .searchable-select-trigger{padding:7px 9px;font-size:13px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#10263d8c;z-index:100;display:flex;align-items:center;justify-content:center;padding:20px}.modal-card{background:var(--card);border:1px solid var(--ink);border-radius:var(--radius);padding:28px 26px;max-width:380px;width:100%;text-align:center}.modal-title{font-size:18px;color:var(--ink);margin-bottom:10px}.modal-body{font-size:13.5px;color:var(--slate);line-height:1.6;margin-bottom:20px}.chart-legend{display:flex;flex-wrap:wrap;gap:8px 18px;margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}.chart-legend-item{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--graphite)}.chart-legend-swatch{width:10px;height:10px;border-radius:2px;flex-shrink:0}.chart-legend-label{color:var(--graphite)}.chart-legend-value{color:var(--slate);font-family:var(--font-mono);font-size:11px}.pdf-export-header{background:var(--ink-dark);border-radius:var(--radius);padding:22px 26px;margin-bottom:24px;display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:12px;border-bottom:3px solid var(--brass)}.pdf-header-brand .pdf-header-name{font-family:Georgia,Times New Roman,serif;font-weight:700;font-size:22px;color:#eaf1f6;letter-spacing:.02em}.pdf-header-brand .pdf-header-sub{font-family:var(--font-mono);font-size:10px;color:#8ea9bc;letter-spacing:.14em;margin-top:3px}.pdf-header-report{text-align:right}.pdf-header-report .pdf-header-title{font-family:var(--font-display);font-size:16px;color:#fff;font-weight:700}.pdf-header-report .pdf-header-meta{font-size:11px;color:#b7c6d3;margin-top:4px}.searchable-select-create{font-weight:600;color:#ea580c;border-top:1px solid #e5e7eb}.searchable-select-create.highlighted{background:#fff7ed}.btn-secondary:disabled{opacity:.45;cursor:not-allowed;background-color:#e5e7eb;color:#6b7280;border-color:#d1d5db;box-shadow:none}.btn-secondary:disabled:hover{background-color:#e5e7eb;color:#6b7280;transform:none}.alert{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;margin-bottom:16px;border-radius:8px;font-size:14px}.alert-success{color:#166534;background:#dcfce7;border:1px solid #86efac}.alert-error{color:#991b1b;background:#fee2e2;border:1px solid #fca5a5}.alert-close{border:none;background:transparent;color:inherit;font-size:20px;cursor:pointer;line-height:1}.form-error{color:#dc2626;font-size:14px;margin-top:8px}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;display:flex;align-items:center;justify-content:center;padding:20px;background:#0f172a8c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.modal{width:100%;max-width:440px;max-height:calc(100vh - 40px);overflow-y:auto;padding:28px;background:#fff;color:#1f2937;border:1px solid #e5e7eb;border-radius:14px;box-shadow:0 20px 60px #00000038}.modal h3{margin:0 0 24px;color:#111827;font-size:21px;font-weight:700;line-height:1.4}.modal .field{display:flex;flex-direction:column;gap:8px;margin-bottom:20px}.modal .field label{display:block;color:#374151;font-size:14px;font-weight:600}.modal input[type=time]{width:100%;min-height:46px;box-sizing:border-box;padding:10px 12px;color:#111827;background:#fff;border:1px solid #cbd5e1;border-radius:8px;font-family:inherit;font-size:15px;outline:none;transition:border-color .2s,box-shadow .2s}.modal input[type=time]:focus{border-color:#ff6a2e;box-shadow:0 0 0 3px #ff6a2e26}.modal .form-error{margin:0 0 16px;padding:10px 12px;color:#b91c1c;background:#fef2f2;border:1px solid #fecaca;border-radius:7px;font-size:13px}.modal .modal-actions{display:flex;justify-content:flex-end;flex-wrap:wrap;gap:10px;margin-top:26px;padding-top:18px;border-top:1px solid #e5e7eb}.modal .modal-actions button{min-height:42px;padding:10px 18px;border-radius:8px;font-family:inherit;font-size:14px;font-weight:600;cursor:pointer}.modal .modal-actions button:disabled{opacity:.55;cursor:not-allowed}@media (max-width: 480px){.modal{padding:22px 18px}.modal .modal-actions{flex-direction:column-reverse}.modal .modal-actions button{width:100%}}.modal .modal-subtitle{margin:-16px 0 24px;color:#6b7280;font-size:14px;line-height:1.5}
