@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";:root{--primary: #1a5f7a;--secondary: #159895;--accent: #57c5b6;--light: #f5f5f5;--dark: #1a1a2e;--success: #28a745;--warning: #ffc107;--danger: #dc3545;--info: #17a2b8;--bg: #f5f7fa;--surface: #ffffff;--border: #e2e8f0;--text: #1e293b;--text-secondary: #64748b;--radius: 10px;--shadow: 0 2px 10px rgba(0,0,0,.1);--shadow-md: 0 4px 12px rgba(0,0,0,.12)}body.dark-mode{--bg: #0f172a;--surface: #111827;--border: #1f2937;--text: #e2e8f0;--text-secondary: #94a3b8;--shadow: 0 2px 10px rgba(0,0,0,.4);--shadow-md: 0 4px 12px rgba(0,0,0,.5)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;transition:background .3s,color .3s}body.dark-mode{background:#0f172a;color:#e2e8f0}.header{background:linear-gradient(135deg,var(--primary) 0%,var(--secondary) 100%);color:#fff;padding:16px 24px;box-shadow:0 4px 6px #0000001a;position:sticky;top:0;z-index:100}body.dark-mode .header{background:linear-gradient(135deg,#0b1f2a,#0f2f3a);box-shadow:0 4px 10px #00000073}.app-shell.locked{filter:blur(6px);pointer-events:none;-webkit-user-select:none;user-select:none}body.locked{overflow:hidden}.lock-overlay{position:fixed;inset:0;background:linear-gradient(135deg,#1a5f7ae0,#159895e6);display:flex;align-items:center;justify-content:center;z-index:9999;padding:20px}.lock-card{background:#fff;border-radius:16px;box-shadow:0 20px 60px #0003;padding:32px;max-width:420px;width:100%;text-align:center}.lock-logo{width:72px;height:72px;margin-bottom:12px}.lock-motto{color:#5b6b7b;margin:6px 0 20px;font-size:.95rem}.lock-form{display:flex;flex-direction:column;gap:12px;text-align:left}.lock-form label{font-weight:600;color:#1a1a2e}.lock-form input{padding:10px 12px;border-radius:8px;border:1px solid #d1d5db;font-size:1rem}.lock-error{color:var(--danger);font-size:.9rem}.header-inner{max-width:1800px;margin:0 auto;display:flex;justify-content:space-between;align-items:center;gap:16px}.header-left{display:flex;align-items:center;gap:16px}.logo{height:44px;max-width:180px;object-fit:contain;background:#fff;padding:5px 10px;border-radius:8px}body.dark-mode .logo{background:#f8fafc}.header-title h1{font-size:1.5rem;font-weight:700;letter-spacing:-.3px}.header-title p{opacity:.85;font-size:.82rem}.header-actions{display:flex;align-items:center;gap:14px}.theme-toggle{display:inline-flex;align-items:center;gap:8px;cursor:pointer;color:#fff;font-weight:600}.theme-toggle input{display:none}.theme-slider{position:relative;width:42px;height:22px;background:#ffffff4d;border-radius:999px;transition:background .2s}.theme-slider:after{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;background:#fff;border-radius:50%;transition:transform .2s}.theme-toggle input:checked+.theme-slider{background:#0006}.theme-toggle input:checked+.theme-slider:after{transform:translate(20px)}.theme-label{font-size:.78rem;text-transform:uppercase;letter-spacing:.04em}.btn{display:inline-flex;align-items:center;gap:6px;padding:9px 18px;border:none;border-radius:8px;font-size:.88rem;font-weight:600;cursor:pointer;transition:transform .2s,box-shadow .2s;color:#fff;background:linear-gradient(135deg,var(--primary),var(--secondary))}.btn:hover{transform:translateY(-1px);box-shadow:0 4px 12px #1a5f7a4d}.btn-small{padding:6px 12px;font-size:.8rem}.btn-secondary{background:var(--surface);color:var(--primary);border:2px solid var(--primary)}.btn-secondary:hover{background:var(--primary);color:#fff}.btn-white{background:#fff;color:var(--primary)}.btn-white:hover{background:#ffffffe6}.container{max-width:1800px;margin:0 auto;padding:20px}.stats-bar{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-bottom:20px}@media(max-width:900px){.stats-bar{grid-template-columns:repeat(3,1fr)}}@media(max-width:500px){.stats-bar{grid-template-columns:repeat(2,1fr)}}.stat-card{background:var(--surface);border-radius:var(--radius);padding:14px;text-align:center;border:1px solid var(--border);box-shadow:var(--shadow);transition:background .3s,border-color .3s}.stat-number{font-size:1.6rem;font-weight:700}.stat-number.primary{color:var(--primary)}.stat-number.pending{color:var(--warning)}.stat-number.requested{color:var(--info)}.stat-number.issued{color:var(--success)}.stat-number.closed{color:var(--text-secondary)}.stat-number.contractors{color:var(--secondary)}.stat-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary);font-weight:600;margin-top:2px}.filter-bar{background:var(--surface);border-radius:var(--radius);padding:16px 20px;margin-bottom:20px;box-shadow:var(--shadow);border:1px solid var(--border);display:flex;gap:14px;flex-wrap:wrap;align-items:flex-end;transition:background .3s,border-color .3s}.filter-group{display:flex;flex-direction:column;gap:4px;flex:1;min-width:140px}.filter-group label{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary)}.filter-group input,.filter-group select{padding:8px 12px;border:1px solid var(--border);border-radius:8px;font-size:.85rem;background:var(--bg);color:var(--text);transition:border-color .2s}.filter-group input:focus,.filter-group select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #15989533}.table-container{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);border:1px solid var(--border);overflow-x:auto;transition:background .3s,border-color .3s}.job-table{width:100%;border-collapse:collapse;font-size:.85rem}.job-table thead{background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff}body.dark-mode .job-table thead{background:linear-gradient(135deg,#0b1f2a,#0f2f3a)}.job-table th{padding:11px 10px;text-align:left;font-weight:600;font-size:.72rem;text-transform:uppercase;letter-spacing:.5px;white-space:nowrap}.job-table td{padding:10px;border-bottom:1px solid var(--border);vertical-align:middle}.job-table tbody tr{transition:background .15s}.job-table tbody tr:hover{background:#1a5f7a0a}body.dark-mode .job-table tbody tr:hover{background:#ffffff08}.job-table tbody tr.job-row-selected{background:#1598951f;outline:2px solid rgba(21,152,149,.4);outline-offset:-2px}body.dark-mode .job-table tbody tr.job-row-selected{background:#57c5b626;outline-color:#57c5b680}.job-table tbody tr:last-child td{border-bottom:none}.cell-photo{width:50px;text-align:center}.photo-thumb-button{border:none;background:transparent;padding:0;cursor:pointer;display:inline-flex;flex-direction:column;align-items:center;gap:2px}.cell-photo img{width:40px;height:40px;border-radius:6px;object-fit:cover;border:2px solid var(--border);cursor:pointer;transition:transform .2s}.cell-photo img:hover{transform:scale(1.2)}.photo-count{font-size:.65rem;color:var(--text-secondary);margin-top:2px}.cell-contractor{font-weight:600;color:var(--primary);white-space:nowrap}body.dark-mode .cell-contractor{color:var(--accent)}.cell-line{white-space:nowrap;color:var(--text-secondary);font-size:.8rem}.cell-activity{max-width:320px}.activity-text{white-space:pre-line;line-height:1.4}.activity-meta{font-size:.72rem;color:var(--accent);margin-top:2px;font-family:SF Mono,Fira Code,monospace}.cell-small{text-align:center}.cell-status{white-space:nowrap}.cell-actions{text-align:center;white-space:nowrap}.status-badge{display:inline-block;padding:3px 8px;border-radius:12px;font-size:.7rem;font-weight:600;text-transform:capitalize;border:1px solid}.priority-badge{display:inline-block;padding:2px 6px;border-radius:4px;font-size:.65rem;font-weight:700;text-transform:uppercase}.priority-no-outage{background:#e0f2fe;color:#075985}body.dark-mode .priority-no-outage{background:#0c4a6e44;color:#7dd3fc}.badge-yes{display:inline-block;padding:1px 6px;border-radius:4px;font-size:.65rem;font-weight:700;background:#d1fae5;color:#065f46}body.dark-mode .badge-yes{background:#065f4644;color:#6ee7b7}.badge-no{display:inline-block;padding:1px 6px;border-radius:4px;font-size:.65rem;font-weight:700;background:#fee2e2;color:#991b1b}body.dark-mode .badge-no{background:#991b1b33;color:#fca5a5}.badge-na{color:var(--text-secondary);font-size:.75rem}.btn-icon{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:6px;cursor:pointer;transition:all .15s;background:transparent;color:var(--text-secondary)}.btn-permit{color:var(--primary)}.btn-permit:hover{background:#1a5f7a1a}body.dark-mode .btn-permit{color:var(--accent)}body.dark-mode .btn-permit:hover{background:#57c5b626}.btn-edit{color:var(--info)}.btn-edit:hover{background:#17a2b81a}.btn-delete{color:var(--danger)}.btn-delete:hover{background:#dc35451a}.loading,.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:var(--text-secondary);gap:12px}.spinner{width:36px;height:36px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.modal-overlay{position:fixed;inset:0;background:#0000008c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:flex-start;justify-content:center;z-index:1000;padding:30px 16px;overflow-y:auto}.modal{background:var(--surface);border-radius:14px;box-shadow:var(--shadow-md);width:100%;max-width:760px;animation:modalIn .2s ease-out;border:1px solid var(--border)}@keyframes modalIn{0%{opacity:0;transform:translateY(-16px) scale(.98)}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:18px 24px;border-bottom:1px solid var(--border);background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff;border-radius:14px 14px 0 0}body.dark-mode .modal-header{background:linear-gradient(135deg,#0b1f2a,#0f2f3a)}.modal-header h2{font-size:1.1rem;font-weight:700}.modal-close{width:30px;height:30px;border:none;background:#ffffff26;color:#fff;font-size:18px;cursor:pointer;border-radius:6px;display:flex;align-items:center;justify-content:center}.modal-close:hover{background:#ffffff40}.modal-form{padding:0 24px 24px;max-height:70vh;overflow-y:auto}.form-section{margin-top:18px}.form-section h3{font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--primary);margin-bottom:10px;padding-bottom:6px;border-bottom:2px solid rgba(26,95,122,.15)}body.dark-mode .form-section h3{color:var(--accent);border-bottom-color:#57c5b633}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.form-grid-3{grid-template-columns:repeat(3,1fr)}.form-group{display:flex;flex-direction:column;gap:3px}.form-group.full-width{grid-column:1 / -1}.form-group label{font-size:.75rem;font-weight:600;color:var(--text-secondary)}.form-group input,.form-group select,.form-group textarea{padding:8px 10px;border:1px solid var(--border);border-radius:6px;font-size:.85rem;font-family:inherit;color:var(--text);background:var(--bg);transition:border-color .2s}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #15989526}.form-group textarea{resize:vertical}.form-check-group{display:flex;align-items:center}.check-label{display:flex;align-items:center;gap:8px;font-size:.85rem;cursor:pointer}.check-label input[type=checkbox]{width:16px;height:16px;accent-color:var(--primary)}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px;padding-top:14px;border-top:1px solid var(--border)}.modal-actions .btn-primary{background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff}.photo-upload-area{border:2px dashed var(--border);border-radius:10px;padding:16px;text-align:center;cursor:pointer;transition:all .2s}.photo-upload-area:hover{border-color:var(--accent);background:#1598950d}.photo-upload-area input{display:none}.photo-upload-label{font-size:.85rem;color:var(--text-secondary)}.photo-upload-label svg{display:block;margin:0 auto 8px}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(80px,1fr));gap:8px;margin-top:10px}.photo-thumb{position:relative;border-radius:8px;overflow:hidden;aspect-ratio:1;border:2px solid var(--border)}.photo-thumb img{width:100%;height:100%;object-fit:cover}.photo-thumb .photo-label{position:absolute;bottom:0;left:0;right:0;background:#0009;color:#fff;font-size:.6rem;padding:2px 4px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.photo-thumb .photo-remove{position:absolute;top:2px;right:2px;width:18px;height:18px;border-radius:50%;background:var(--danger);color:#fff;border:none;cursor:pointer;font-size:10px;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s}.photo-thumb:hover .photo-remove{opacity:1}.photo-viewer-overlay{position:fixed;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1200;padding:20px}.photo-viewer{background:var(--surface);border:1px solid var(--border);border-radius:14px;width:min(900px,95vw);max-height:90vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:var(--shadow-md)}.photo-viewer-header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--border);background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff}body.dark-mode .photo-viewer-header{background:linear-gradient(135deg,#0b1f2a,#0f2f3a)}.photo-viewer-title{font-size:.9rem;font-weight:600}.photo-viewer-close{width:30px;height:30px;border:none;background:#fff3;color:#fff;border-radius:6px;cursor:pointer;font-size:18px}.photo-viewer-body{position:relative;display:flex;align-items:center;justify-content:center;background:#0b0f1a;padding:16px;flex:1}.photo-viewer-body img{max-width:100%;max-height:60vh;object-fit:contain;border-radius:8px;border:1px solid #222}.photo-nav{position:absolute;top:50%;transform:translateY(-50%);width:36px;height:36px;border:none;border-radius:50%;background:#ffffff26;color:#fff;font-size:22px;cursor:pointer}.photo-prev{left:10px}.photo-next{right:10px}.photo-viewer-thumbs{display:flex;gap:8px;padding:10px 12px;overflow-x:auto;border-top:1px solid var(--border);background:var(--bg)}.photo-thumb-btn{border:2px solid transparent;background:transparent;padding:0;cursor:pointer;border-radius:8px;overflow:hidden;width:54px;height:54px;flex:0 0 auto}.photo-thumb-btn img{width:100%;height:100%;object-fit:cover}.photo-thumb-btn.active{border-color:var(--accent)}.permit-modal .photo-select-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:12px;margin:16px 0}.photo-select-item{position:relative;border-radius:8px;overflow:hidden;border:3px solid var(--border);cursor:pointer;transition:border-color .15s}.photo-select-item.selected{border-color:var(--success)}.photo-select-item img{width:100%;aspect-ratio:1;object-fit:cover;display:block}.photo-select-item .check-overlay{position:absolute;top:4px;right:4px;width:22px;height:22px;border-radius:50%;background:var(--success);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;opacity:0;transition:opacity .15s}.photo-select-item.selected .check-overlay{opacity:1}.photo-select-label{font-size:.7rem;padding:4px;text-align:center;color:var(--text-secondary);background:var(--bg)}@media(max-width:768px){.header-inner{flex-direction:column;align-items:flex-start;gap:10px}.header-actions{width:100%;justify-content:space-between}.form-grid,.form-grid-3{grid-template-columns:1fr}.container{padding:12px}}
