:root{font-family:Plus Jakarta Sans,Segoe UI,system-ui,-apple-system,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;min-height:100dvh;background:#fff;color:#111827;overflow-x:hidden}#root{min-height:100vh;min-height:100dvh}:root{--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-7: 1.75rem;--space-8: 2rem;--space-9: 2.25rem;--space-10: 2.5rem;--space-12: 3rem;--radius: 8px;--radius-sm: 6px;--radius-card: 14px;--shadow-card: 0 2px 8px rgba(0, 0, 0, .06);--shadow-card-hover: 0 8px 24px rgba(0, 0, 0, .08);--text: #1a1a1a;--text-muted: #6b6b6b;--text-subtle: #999;--border: #ebebeb;--surface: #f7f7f7;--accent: #4a8bc2;--accent-hover: #3d7ab0;--focus: #4a8bc2;--error-bg: #fef2f2;--error-text: #b91c1c;--bg: #fff;--page-bg: #fafafa;--text-xs: .75rem;--text-sm: .8125rem;--text-base: .9375rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.375rem;--leading-normal: 1.5;--leading-relaxed: 1.6;--sidebar-bg: #293b4a;--sidebar-text: #b0bcc8;--sidebar-text-active: #ffffff;--sidebar-accent: #2085cf;--sidebar-accent-hover: #1a6ba8;--sidebar-active-bg: #2085cf}html.dark{--text: #e5e5e5;--text-muted: #a3a3a3;--text-subtle: #737373;--border: #333;--surface: #262626;--bg: #171717;--page-bg: #0a0a0a;--shadow-card: 0 1px 3px rgba(0, 0, 0, .3);--shadow-card-hover: 0 4px 12px rgba(0, 0, 0, .4)}html.dark body{background:var(--page-bg);color:var(--text)}.app{min-height:100vh}.app-schema-banner{display:flex;align-items:center;gap:.75rem;padding:.6rem 1rem;background:var(--warning-bg, #fef3c7);color:var(--warning-fg, #92400e);font-size:.875rem;border-bottom:1px solid var(--border)}.app-schema-banner code{font-size:.8em;padding:.1em .3em;background:#00000014;border-radius:3px}.app-schema-banner-dismiss{margin-left:auto;padding:.2rem .5rem;background:transparent;border:1px solid currentColor;border-radius:4px;cursor:pointer;font-size:1.1rem;line-height:1}.app-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;gap:var(--space-4, 1rem);color:var(--text-muted);font-size:var(--text-base, .9375rem)}.app-loading-spinner{display:inline-block;width:28px;height:28px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:app-loading-spin .7s linear infinite}@keyframes app-loading-spin{to{transform:rotate(360deg)}}.app:has(.app-layout){height:100vh;overflow:hidden;display:flex;flex-direction:column}.app-layout{display:flex;flex-direction:column;min-height:100vh}.app:has(.app-layout) .app-layout{flex:1;min-height:0;overflow:hidden}.app-body{display:flex;flex:1;min-height:0;padding-top:56px}.topbar{display:none}.app-bar{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;align-items:stretch;height:56px;min-height:56px;background:var(--bg);border-bottom:1px solid var(--border);box-shadow:0 1px #0000000a}.app-bar .menu-btn{display:none}.app-bar-brand-area{width:220px;flex-shrink:0;background:var(--sidebar-bg);display:flex;align-items:center;padding:0 var(--space-4);border-right:1px solid rgba(0,0,0,.08)}.app-bar-brand{display:flex;align-items:center;gap:var(--space-3);min-width:0}.app-bar-monogram{display:flex;align-items:center;justify-content:center;width:30px;height:30px;background:#ffffff1f;color:#fffffff2;font-size:.6875rem;font-weight:600;letter-spacing:.03em;border-radius:6px;flex-shrink:0}.app-bar-title{font-size:.875rem;font-weight:600;color:#ffffffeb;letter-spacing:-.01em}.app-bar-actions{flex:1;display:flex;align-items:center;justify-content:flex-end;gap:var(--space-3);padding:0 var(--space-5);min-width:0}.sidebar-job-site-select{appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--text-muted) 50%),linear-gradient(135deg,var(--text-muted) 50%,transparent 50%);background-position:calc(100% - 14px) calc(50% - 2px),calc(100% - 9px) calc(50% - 2px);background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:26px}.app-bar-project{font-size:var(--text-sm);color:var(--text-muted)}.app-bar-user{padding:var(--space-2) var(--space-4);font-size:var(--text-sm);font-weight:500;color:var(--text-muted);background:none;border:none;border-radius:var(--radius);cursor:pointer;transition:color .15s,background .15s}.app-bar-user:hover{color:var(--text);background:var(--surface)}.sidebar-backdrop{display:none}.skip-link{position:absolute;top:-100px;left:var(--space-3);z-index:200;padding:var(--space-2) var(--space-4);background:var(--text);color:var(--bg);font-size:var(--text-sm);text-decoration:none;border-radius:var(--radius);transition:top .15s}.skip-link:focus{top:.5rem;outline:2px solid var(--focus);outline-offset:2px}.sidebar{width:220px;flex-shrink:0;background:var(--sidebar-bg);display:flex;flex-direction:column;border-right:1px solid rgba(255,255,255,.06)}.sidebar-nav{flex:1;padding:var(--space-4) 0}.sidebar-job-site{padding:0 var(--space-5) var(--space-4)}.sidebar-job-site-label{font-size:.7rem;color:#fff9;letter-spacing:.06em;text-transform:uppercase;margin-bottom:8px}.sidebar-job-site-select{width:100%;padding:10px 42px 10px var(--space-3);font-size:.95rem;font-weight:600;color:var(--sidebar-text-active);background:#ffffff1a;border:1px solid rgba(255,255,255,.18);border-radius:10px;line-height:1.2;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;box-shadow:0 1px #0000002e;transition:background .15s ease,border-color .15s ease,box-shadow .15s ease}.sidebar-job-site-select option{color:#111}.sidebar-job-site-select:hover{background:#ffffff24;border-color:#ffffff3d}.sidebar-job-site-select:disabled{opacity:.7}.sidebar-job-site-select:focus{outline:2px solid var(--sidebar-accent);outline-offset:2px}.nav-item{display:flex;align-items:center;gap:var(--space-3);width:100%;padding:10px var(--space-5);font-size:.9375rem;font-weight:500;color:var(--sidebar-text);background:none;border:none;border-left:3px solid transparent;text-align:left;cursor:pointer;transition:color .15s ease,background .15s ease}.nav-item .nav-icon{flex-shrink:0;width:20px;height:20px;opacity:.85}.nav-item.active .nav-icon{opacity:1}.nav-item:hover{color:var(--sidebar-text-active);background:#ffffff0f}.nav-item:focus-visible{outline:2px solid var(--sidebar-accent);outline-offset:-2px}.nav-item.active{color:var(--sidebar-text-active);font-weight:600;background:#2085cf38;border-left-color:var(--sidebar-accent)}.sidebar-footer{padding:var(--space-4) var(--space-5) var(--space-5);border-top:1px solid rgba(255,255,255,.06);margin-top:auto}.nav-item.logout{color:var(--sidebar-text)}.nav-item.logout:hover{color:var(--sidebar-text-active)}.main-content{flex:1;min-width:0;min-height:0;background:var(--page-bg);padding:var(--space-10) var(--space-12);overflow:auto;overflow-x:hidden;border-left:1px solid var(--border);-webkit-overflow-scrolling:touch}.stats-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:var(--space-5);margin-bottom:var(--space-10)}.stat-card{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-card);padding:var(--space-6);box-shadow:var(--shadow-card);transition:box-shadow .2s}.stat-card:hover{box-shadow:var(--shadow-card-hover)}.stat-value{display:block;font-size:2rem;font-weight:700;color:var(--text);line-height:1.2;letter-spacing:-.03em;margin-bottom:var(--space-1)}.stat-label{font-size:var(--text-sm);font-weight:500;color:var(--text-muted)}.view-content-dashboard{max-width:48rem}.dashboard-stats{display:grid;grid-template-columns:repeat(5,1fr);gap:var(--space-4);margin-bottom:var(--space-6)}.dashboard-stat{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-card);padding:var(--space-4);box-shadow:var(--shadow-card);text-align:center}.dashboard-stat-value{display:block;font-size:1.75rem;font-weight:600;color:var(--text);letter-spacing:-.02em;line-height:1.2}.dashboard-stat-label{display:block;margin-top:var(--space-1);font-size:var(--text-sm);color:var(--text-muted);font-weight:500}.dashboard-section-title{margin:0 0 var(--space-4);font-size:var(--text-base);font-weight:600;color:var(--text);letter-spacing:-.01em}.dashboard-actions{margin-bottom:var(--space-6)}.dashboard-actions-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--space-4)}.dashboard-action-card{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2);padding:var(--space-4);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-card);box-shadow:var(--shadow-card);cursor:pointer;text-align:left;transition:box-shadow .2s,border-color .2s}.dashboard-action-card:hover{box-shadow:var(--shadow-card-hover);border-color:#2085cf40}.dashboard-action-icon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-sm);background:#2085cf1a;color:var(--sidebar-accent)}.dashboard-action-label{font-size:var(--text-base);font-weight:600;color:var(--text)}.dashboard-action-hint{font-size:var(--text-sm);color:var(--text-muted)}@media(min-width:900px){.dashboard-action-hint{display:none}}.dashboard-activity-card{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-card);box-shadow:var(--shadow-card);overflow:hidden}.dashboard-activity-list{list-style:none;margin:0;padding:0}.dashboard-activity-item{display:flex;align-items:flex-start;gap:var(--space-3);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border)}.dashboard-activity-item:last-child{border-bottom:none}.dashboard-activity-icon{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--radius-sm)}.dashboard-activity-icon-issue{background:#2085cf1a;color:var(--sidebar-accent)}.dashboard-activity-icon-user{background:#6b72801f;color:var(--text-muted)}.dashboard-activity-icon-site{background:#22c55e1a;color:#16a34a}.dashboard-activity-icon-dot{background:var(--surface)}.dashboard-activity-dot{width:6px;height:6px;border-radius:50%;background:var(--text-subtle)}.dashboard-activity-body{flex:1;min-width:0}.dashboard-activity-text{display:block;font-size:var(--text-sm);color:var(--text);font-weight:500}.dashboard-activity-meta{display:block;margin-top:var(--space-1);font-size:.75rem;color:var(--text-subtle)}.dashboard-activity-empty{margin:0;padding:var(--space-8) var(--space-5);font-size:var(--text-sm);color:var(--text-muted);text-align:center}@media(max-width:480px){.dashboard-stats,.dashboard-actions-grid{grid-template-columns:1fr}}.dashboard-section{margin-bottom:var(--space-6)}.dashboard-section:last-child{margin-bottom:0}.section-title{margin:0 0 var(--space-5);font-size:var(--text-lg);font-weight:600;color:var(--text);letter-spacing:-.01em}.view-content h1{margin:0 0 var(--space-2);font-size:1.5rem;font-weight:700;color:var(--text);letter-spacing:-.03em}.view-content p{margin:0;font-size:var(--text-sm);color:var(--text-muted);line-height:var(--leading-relaxed)}.view-desc{margin-bottom:var(--space-6);font-size:var(--text-base);color:var(--text-muted)}.view-content-dashboard h1{margin-bottom:6px}.view-content-dashboard .view-desc{margin-bottom:var(--space-4)}.view-content-account{max-width:40rem}.view-content-account h1{margin-bottom:var(--space-1)}.view-content-account .view-desc{margin-bottom:var(--space-5)}.account-message{padding:var(--space-3) var(--space-4);margin-bottom:var(--space-4);font-size:var(--text-sm);font-weight:500;color:#fff;background:var(--sidebar-accent);border-radius:var(--radius-sm);box-shadow:var(--shadow-card)}.account-section{margin-bottom:var(--space-8)}.account-section .section-title{margin-bottom:var(--space-3);font-size:var(--text-base);font-weight:600;color:var(--text)}.account-card{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-card);padding:var(--space-6);box-shadow:var(--shadow-card)}.import-issues-desc{font-size:var(--text-sm);color:var(--text-muted);margin-bottom:var(--space-4);max-width:42rem}.import-json-textarea{width:100%;max-width:42rem;min-height:120px;padding:var(--space-2) var(--space-3);font-family:ui-monospace,monospace;font-size:var(--text-sm);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);color:var(--text);resize:vertical}.import-json-textarea:focus{outline:none;border-color:var(--accent)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.import-message{font-size:var(--text-sm);margin-top:.5rem;color:var(--text-muted)}.import-mode-tabs{display:flex;gap:var(--space-2);margin-bottom:var(--space-4)}.import-mode-tab{padding:var(--space-2) var(--space-3);font-size:var(--text-sm);font-weight:500;color:var(--text-muted);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;transition:color .15s,background .15s,border-color .15s}.import-mode-tab:hover{color:var(--text);background:var(--bg)}.import-mode-tab.active{color:var(--accent);background:var(--bg);border-color:var(--accent)}.import-file-input{position:absolute;width:0;height:0;opacity:0;pointer-events:none}.account-card .field-checkbox{display:flex;align-items:center;gap:var(--space-2)}.account-card .field-checkbox input{flex-shrink:0}.import-photo-fetch-note{font-size:var(--text-xs);color:var(--text-muted);margin-top:var(--space-1);margin-bottom:var(--space-2)}.import-photo-fetch-error{font-size:var(--text-sm);color:var(--error-text);margin-top:var(--space-2)}.profile-avatar-wrap{display:flex;align-items:center;gap:var(--space-4);margin-bottom:var(--space-5);padding-bottom:var(--space-4);border-bottom:1px solid var(--border)}.profile-avatar{width:56px;height:56px;border-radius:50%;background:var(--sidebar-accent);color:#fff;display:flex;align-items:center;justify-content:center;font-size:1.25rem;font-weight:600;letter-spacing:-.02em}.profile-avatar-hint{font-size:var(--text-sm);color:var(--text-muted)}.account-fields{display:flex;flex-direction:column;gap:var(--space-4)}.account-fields .field input{padding:var(--space-2) var(--space-3);font-size:var(--text-base);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);color:var(--text);width:100%;max-width:20rem;transition:border-color .15s}.account-fields .field input:focus{outline:none;border-color:var(--accent)}.account-fields .field-readonly,.field-readonly{background:var(--surface);color:var(--text-muted);cursor:default}.account-fields .field-readonly:focus{border-color:var(--border)}.account-fields .btn-primary,.account-card .btn-primary{margin-top:var(--space-1);padding:var(--space-2) var(--space-4);font-size:var(--text-sm);font-weight:600;color:#fff;background:var(--accent);border:none;border-radius:var(--radius);cursor:pointer;transition:background .15s}.account-fields .btn-primary:hover,.account-card .btn-primary:hover{background:var(--sidebar-accent)}.preference-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);padding:var(--space-3) 0;border-bottom:1px solid var(--border)}.preference-row:first-child{padding-top:0}.preference-row:last-of-type{border-bottom:none;padding-bottom:0}.preference-row-select{align-items:center}.preference-select{padding:var(--space-2) var(--space-3);font-size:var(--text-sm);font-weight:500;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;min-width:120px}.preference-select:focus{outline:none;border-color:var(--accent)}.preference-label{display:block;font-size:var(--text-sm);font-weight:500;color:var(--text);margin-bottom:2px}.preference-desc{display:block;font-size:var(--text-xs, .75rem);color:var(--text-muted)}.toggle{position:relative;display:inline-block;width:40px;height:22px;flex-shrink:0;cursor:pointer}.toggle-slider{position:absolute;inset:0;background:var(--border);border-radius:999px;transition:background .2s}.toggle-slider:before{content:"";position:absolute;height:16px;width:16px;left:3px;bottom:3px;background:var(--bg);border-radius:50%;transition:transform .2s;box-shadow:0 1px 2px #0000001f}.toggle input:checked+.toggle-slider{background:var(--accent)}.toggle input:checked+.toggle-slider:before{transform:translate(18px)}.toggle input:focus-visible+.toggle-slider{outline:2px solid var(--accent);outline-offset:2px}.toggle input{opacity:0;width:0;height:0}.account-section .account-card .field{margin-bottom:0}.account-section .account-card .btn-primary{margin-top:var(--space-4)}.view-content-users{max-width:52rem}.users-page-header{margin-bottom:var(--space-5)}.users-page-header h1{margin:0 0 var(--space-1);font-size:1.5rem;font-weight:700;color:var(--text);letter-spacing:-.03em}.view-content-users .view-desc{margin:0;font-size:var(--text-base);color:var(--text-muted)}.users-section{margin-bottom:var(--space-8)}.users-section-title{margin:0 0 var(--space-3);font-size:var(--text-sm);font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.users-page-header{margin-bottom:var(--space-6)}.users-page-header h1{margin:0 0 var(--space-2);font-size:1.5rem;font-weight:600;color:var(--text);letter-spacing:-.02em}.view-content-users .view-desc{margin:0;font-size:var(--text-base);color:var(--text-muted);line-height:var(--leading-relaxed)}.users-section{margin-bottom:var(--space-10)}.users-section:last-child{margin-bottom:0}.users-section-title{margin:0 0 var(--space-4);font-size:var(--text-base);font-weight:600;color:var(--text);letter-spacing:-.01em}.users-form-card{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-card);padding:var(--space-6);box-shadow:var(--shadow-card)}.users-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-5) var(--space-6);margin-bottom:var(--space-5)}.users-form-grid .field .label{display:block;margin-bottom:var(--space-2);font-size:var(--text-sm);font-weight:500;color:var(--text)}.users-form-grid .field input,.users-form-grid .field select{width:100%;padding:var(--space-2) var(--space-4);font-size:var(--text-base);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);transition:border-color .15s,box-shadow .15s}.users-form-grid .field input:focus,.users-form-grid .field select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #2085cf1f}.users-form-grid .field .hint{display:block;margin-top:var(--space-2);font-size:.75rem;color:var(--text-subtle)}.users-role-select{cursor:pointer;min-width:0}.users-form-actions{margin-top:var(--space-2)}.users-form-actions .btn-primary{padding:var(--space-2) var(--space-6);font-size:var(--text-sm);font-weight:600;color:#fff;background:var(--sidebar-accent);border:none;border-radius:var(--radius-sm);cursor:pointer;transition:background .15s}.users-form-actions .btn-primary:hover{background:var(--sidebar-accent-hover)}.users-list-card{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-card);overflow:hidden;box-shadow:var(--shadow-card)}.users-table-wrap{overflow-x:auto}.users-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.users-table th{padding:var(--space-4) var(--space-5);text-align:left;font-weight:600;font-size:.6875rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;background:var(--surface);border-bottom:1px solid var(--border)}.users-table td{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border);color:var(--text);vertical-align:middle}.users-table tbody tr:last-child td{border-bottom:none}.users-table tbody tr:hover{background:#00000005}html.dark .users-table tbody tr:hover{background:#ffffff0a}.users-cell-name{font-weight:500;color:var(--text)}.users-cell-email{color:var(--text-muted);font-size:.8125rem}.users-cell-sites{font-size:.8125rem;color:var(--text-muted)}.role-badge{display:inline-block;padding:4px 10px;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;border-radius:var(--radius-sm)}.role-admin{background:#2085cf1f;color:var(--sidebar-accent)}.role-supervisor{background:#6b72801a;color:var(--text-muted)}.role-sub{background:#22c55e1a;color:#16a34a}.role-user{background:#a855f71a;color:#7c3aed}.users-table .users-actions-cell{white-space:nowrap}.users-actions-cell .users-action-btn{margin-right:var(--space-2);padding:6px 12px;font-size:.8125rem;font-weight:500;color:var(--sidebar-accent);background:#2085cf14;border:1px solid rgba(32,133,207,.2);border-radius:var(--radius-sm);cursor:pointer;transition:background .15s,border-color .15s}.users-actions-cell .users-action-btn:hover{background:#2085cf24;border-color:#2085cf59}.users-actions-cell .users-action-link{font-size:.8125rem;font-weight:500;color:var(--text-muted);background:none;border:none;padding:0;cursor:pointer;text-decoration:none;transition:color .15s}.users-actions-cell .users-action-link:hover{color:var(--sidebar-accent)}.users-job-sites-field{grid-column:1 / -1}.users-job-sites-field .label{display:block;margin-bottom:var(--space-2);font-weight:500;color:var(--text);font-size:var(--text-sm)}.users-job-sites-checkboxes{display:flex;flex-wrap:wrap;gap:var(--space-3) var(--space-4);margin-bottom:var(--space-2)}.users-site-check{display:inline-flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--text);cursor:pointer}.users-site-check input{margin:0;accent-color:var(--sidebar-accent)}.users-assign-sites-btn{font-size:var(--text-sm);padding:0;background:none;border:none;color:var(--sidebar-accent);cursor:pointer;text-decoration:underline;text-underline-offset:2px}.users-assign-sites-btn:hover{color:var(--sidebar-accent-hover)}.users-assign-sites-panel{margin-top:0;padding:var(--space-6);background:var(--surface);border-top:1px solid var(--border)}.users-assign-sites-panel h3{margin:0 0 var(--space-4);font-size:var(--text-base);font-weight:600;color:var(--text)}.users-assign-sites-list{display:flex;flex-wrap:wrap;gap:var(--space-3) var(--space-4);margin-bottom:var(--space-5)}.users-assign-sites-actions{display:flex;gap:var(--space-3);flex-wrap:wrap}.users-edit-panel{margin-top:0;padding:0;background:var(--bg);border-top:1px solid var(--border);box-shadow:0 -4px 12px #0000000a}.users-edit-panel-header{padding:var(--space-5) var(--space-6);background:var(--surface);border-bottom:1px solid var(--border)}.users-edit-panel-header h3{margin:0;font-size:var(--text-base);font-weight:600;color:var(--text);letter-spacing:-.01em}.users-edit-panel-subtitle{display:block;margin-top:var(--space-1);font-size:var(--text-sm);color:var(--text-muted);font-weight:500}.users-edit-form{display:flex;flex-direction:column;gap:0;max-width:40rem}.users-edit-section{padding:var(--space-5) var(--space-6);border-bottom:1px solid var(--border)}.users-edit-section:last-of-type{border-bottom:none}.users-edit-section-title{display:block;margin-bottom:var(--space-4);font-size:.6875rem;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em}.users-edit-fields{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4) var(--space-5)}.users-edit-fields .field .label{display:block;margin-bottom:var(--space-2);font-size:var(--text-sm);font-weight:500;color:var(--text)}.users-edit-fields .field input,.users-edit-fields .field select{width:100%;padding:var(--space-2) var(--space-4);font-size:var(--text-base);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);transition:border-color .15s,box-shadow .15s}.users-edit-fields .field input:focus,.users-edit-fields .field select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #2085cf1f}.users-edit-fields .field-optional{background:var(--surface)}.users-edit-fields .field-optional::placeholder{color:var(--text-subtle)}.users-edit-section-sites{background:var(--surface)}.users-job-sites-group{padding:var(--space-4);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm)}.users-edit-section-sites .users-job-sites-checkboxes{margin-bottom:var(--space-3)}.users-edit-section-sites .users-job-sites-checkboxes:last-child{margin-bottom:0}.users-edit-hint{display:block;margin-top:var(--space-3);padding-top:var(--space-3);border-top:1px solid var(--border);font-size:.75rem;color:var(--text-subtle)}.users-edit-panel-actions{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-3);padding:var(--space-5) var(--space-6);background:var(--surface);border-top:1px solid var(--border)}.users-edit-panel-actions .btn-primary{padding:var(--space-2) var(--space-5);font-size:var(--text-sm);font-weight:600;color:#fff;background:var(--sidebar-accent);border:none;border-radius:var(--radius-sm);cursor:pointer;transition:background .15s}.users-edit-panel-actions .btn-primary:hover{background:var(--sidebar-accent-hover)}.users-edit-panel-actions .btn-secondary{padding:var(--space-2) var(--space-4);font-size:var(--text-sm);font-weight:500;color:var(--sidebar-accent);background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:background .15s,border-color .15s}.users-edit-panel-actions .btn-secondary:hover{background:var(--surface);border-color:var(--text-muted)}.users-edit-btn{margin-right:var(--space-2)}.btn-sm{padding:6px 12px;font-size:.8125rem;font-weight:500;border-radius:var(--radius-sm)}@media(max-width:540px){.users-form-grid,.users-edit-form,.users-edit-fields{grid-template-columns:1fr}}.dashboard-summary{margin-bottom:var(--space-6)}.summary-line{font-size:var(--text-base);color:var(--text-muted)}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--space-5)}.placeholder-card{padding:var(--space-6);border-radius:var(--radius-card);background:var(--bg);border:1px solid var(--border);box-shadow:var(--shadow-card);transition:box-shadow .2s}.placeholder-card:hover{box-shadow:var(--shadow-card-hover)}.placeholder-card .card-label{display:block;font-size:.6875rem;font-weight:600;color:var(--text-subtle);text-transform:uppercase;letter-spacing:.08em;margin-bottom:var(--space-3)}.placeholder-card p{margin:0;font-size:var(--text-sm);color:var(--text-muted)}.empty-state{text-align:center;padding:var(--space-10) var(--space-6);border-radius:var(--radius);background:var(--surface)}.empty-state-text{font-size:var(--text-base);font-weight:500;color:var(--text);margin:0 0 var(--space-1)}.empty-state-hint{font-size:var(--text-sm);color:var(--text-subtle);margin:0 0 var(--space-5)}.add-btn{min-height:44px;padding-left:var(--space-6);padding-right:var(--space-6)}.view-content{animation:viewFade .2s ease-out;max-width:56rem;margin-left:auto;margin-right:auto;padding:0 var(--space-4)}.view-content-list{max-width:none;display:flex;flex-direction:column;gap:0;padding:0 var(--space-4)}.page-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-5)}.page-header h1{margin:0;font-size:var(--text-2xl);font-weight:600;letter-spacing:-.02em;color:var(--text)}.search-wrap{flex-shrink:0}.search-input{width:220px;padding:var(--space-2) var(--space-3) var(--space-2) var(--space-8);font-size:var(--text-sm);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23999' stroke-width='2'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.35-4.35'/%3E%3C/svg%3E") no-repeat 10px center;color:var(--text)}.search-input::placeholder{color:var(--text-subtle)}.search-input:focus{outline:none;border-color:var(--accent)}.issues-context-hint{margin:0 0 var(--space-3);font-size:var(--text-sm);color:var(--text-muted)}.add-issue-modal{position:fixed;top:0;right:0;bottom:0;width:min(420px,95vw);background:var(--bg);border-left:1px solid var(--border);box-shadow:-4px 0 20px #00000014;z-index:60;display:flex;flex-direction:column;animation:panelSlide .2s ease-out}.add-issue-modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border);flex-shrink:0}.add-issue-modal-header h2{margin:0;font-size:var(--text-base);font-weight:600;color:var(--text)}.add-issue-modal-body{flex:1;overflow:auto;padding:var(--space-5);min-height:0}.add-issue-modal-actions{display:flex;gap:var(--space-2);padding:var(--space-4) var(--space-5);border-top:1px solid var(--border);flex-shrink:0}@media(max-width:768px){.view-content{padding:0 var(--space-3)}.view-content-dashboard{max-width:none}.dashboard-stats{grid-template-columns:1fr 1fr;gap:var(--space-3)}.dashboard-stat{padding:var(--space-3)}.dashboard-stat-value{font-size:1.4rem}.dashboard-actions-grid{grid-template-columns:1fr 1fr;gap:var(--space-3)}.dashboard-action-card{padding:var(--space-3)}.dashboard-action-icon{width:36px;height:36px}.dashboard-action-label{font-size:var(--text-sm)}.dashboard-action-hint{display:none}.dashboard-recent-grid{grid-template-columns:1fr;gap:var(--space-3)}.dashboard-recent-card{min-height:auto}.dashboard-activity-item{padding:var(--space-3) var(--space-4)}.add-issue-modal{width:100%;max-width:none;inset:0;height:100dvh;min-height:100%;border-left:none;border-radius:0;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}.add-issue-modal-header,.add-issue-modal-actions{padding-left:max(var(--space-5),env(safe-area-inset-left));padding-right:max(var(--space-5),env(safe-area-inset-right))}.add-issue-modal-body{padding:var(--space-5);padding-left:max(var(--space-5),env(safe-area-inset-left));padding-right:max(var(--space-5),env(safe-area-inset-right))}}.add-issue-form-body{display:flex;flex-direction:column;gap:var(--space-3)}.add-issue-form-body .field input,.add-issue-form-body .field textarea,.add-issue-form-body .field select{width:100%;padding:var(--space-2) var(--space-3);font-size:var(--text-base);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);color:var(--text)}.add-issue-form-body .field input:focus,.add-issue-form-body .field textarea:focus,.add-issue-form-body .field select:focus{outline:none;border-color:var(--accent)}.add-issue-form-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}.ticket-form-modal{max-width:680px;width:min(680px,96vw);border-radius:var(--radius-card);box-shadow:var(--shadow-card)}.ticket-form-modal .add-issue-modal-body{max-height:88vh;overflow-y:auto;overflow-x:auto;padding:var(--space-7) var(--space-6)}.ticket-form-header{padding:var(--space-5) var(--space-6);border-bottom:1px solid var(--border)}.ticket-form-header h2{font-size:1.125rem;font-weight:600;letter-spacing:-.02em;color:var(--text)}.ticket-form-body{display:flex;flex-direction:column;gap:var(--space-9);min-width:0}.ticket-form-block{display:flex;flex-direction:column;gap:var(--space-4);padding:var(--space-6);background:var(--surface);border-radius:var(--radius);border:1px solid var(--border);min-width:0}.ticket-form-block-title{margin:0 0 var(--space-3) 0;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted)}.ticket-form-fields{display:flex;flex-direction:column;gap:var(--space-4)}.ticket-form-fields .field input,.ticket-form-row .field input{width:100%;min-width:0;padding:var(--space-3) var(--space-4);font-size:var(--text-sm);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);color:var(--text);transition:border-color .15s ease,box-shadow .15s ease}.ticket-form-fields .field input:focus,.ticket-form-row .field input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #4a8bc21f}.ticket-form-fields .label,.ticket-form-row .label{display:block;font-size:var(--text-xs);font-weight:500;color:var(--text-muted);margin-bottom:var(--space-2)}.ticket-form-row{display:grid;grid-template-columns:80px minmax(100px,1fr) minmax(100px,1fr);gap:var(--space-5);align-items:end}.ticket-form-line-items{margin-top:0;padding:var(--space-6);padding-top:var(--space-7);border-top:1px solid var(--border);background:var(--surface);border-radius:var(--radius);border:1px solid var(--border);min-width:0}.ticket-form-line-items-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-5)}.ticket-form-line-items-header .ticket-form-block-title{margin:0}.ticket-form-line-items .btn-sm{padding:var(--space-2) var(--space-4);font-size:var(--text-sm);font-weight:500;border-radius:var(--radius)}.ticket-form-table-wrap{overflow-x:auto;margin-bottom:var(--space-5);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg)}.ticket-form-table{width:100%;min-width:480px;border-collapse:collapse;font-size:var(--text-sm)}.ticket-form-table th,.ticket-form-table td{padding:var(--space-3) var(--space-4);text-align:left;vertical-align:middle;border-bottom:1px solid var(--border)}.ticket-form-table tbody tr:last-child td{border-bottom:none}.ticket-form-table tbody tr:hover td{background:var(--bg-muted, rgba(0,0,0,.02))}.ticket-form-table th{font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:.6875rem;background:var(--bg-muted, rgba(0,0,0,.04));padding:var(--space-3) var(--space-4)}.ticket-form-th-qty{width:72px;min-width:72px}.ticket-form-th-desc{min-width:11ch}.ticket-form-th-price{width:96px;min-width:96px}.ticket-form-th-total{width:84px;text-align:right;min-width:84px}.ticket-form-th-remove{width:44px;min-width:44px}.ticket-form-td-qty input,.ticket-form-td-price input{width:100%;max-width:72px;padding:var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:var(--radius);font-size:var(--text-sm);text-align:right;background:var(--bg);color:var(--text);box-sizing:border-box}.ticket-form-td-qty input::-webkit-outer-spin-button,.ticket-form-td-qty input::-webkit-inner-spin-button,.ticket-form-td-price input::-webkit-outer-spin-button,.ticket-form-td-price input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.ticket-form-td-qty input,.ticket-form-td-price input{-moz-appearance:textfield;appearance:textfield}.ticket-form-td-desc input{width:100%;min-width:100px;padding:var(--space-2) var(--space-3);border:1px solid transparent;border-radius:var(--radius);font-size:var(--text-sm);background:transparent;color:var(--text);transition:border-color .15s,background .15s}.ticket-form-td-desc input:hover,.ticket-form-td-desc input:focus{border-color:var(--border);background:var(--bg);outline:none}.ticket-form-td-total{text-align:right;font-variant-numeric:tabular-nums;color:var(--text-muted);font-size:var(--text-sm)}.ticket-form-td-remove{text-align:center}.ticket-form-remove-line{opacity:.45;font-size:1.125rem;padding:var(--space-1)}.ticket-form-remove-line:hover{opacity:1;color:var(--danger, #dc2626)}.ticket-form-total-row{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-5);padding:var(--space-5) 0 0;margin-top:var(--space-3);font-size:1rem;font-weight:600;border-top:2px solid var(--border);color:var(--text)}.ticket-form-total-label{color:var(--text-muted);font-weight:500}.ticket-form-total-value{font-variant-numeric:tabular-nums;min-width:88px;text-align:right;letter-spacing:-.02em}.ticket-form-actions{padding:var(--space-5) var(--space-6);border-top:1px solid var(--border);gap:var(--space-4);justify-content:flex-end}.ticket-form-actions .btn-create{order:1;padding:var(--space-2) var(--space-5);font-size:var(--text-sm)}.ticket-form-actions .btn-secondary{order:0;padding:var(--space-2) var(--space-4);font-size:var(--text-sm)}.tickets-page .view-desc{display:none}.tickets-page.view-content{max-width:900px;margin-left:auto;margin-right:auto;padding-left:var(--space-4);padding-right:var(--space-4)}.tickets-page-header{margin-bottom:var(--space-5)}.tickets-page-header h1{font-size:1.375rem;font-weight:600;letter-spacing:-.02em}.tickets-toolbar{margin-bottom:var(--space-5);padding:var(--space-2) 0}.tickets-page .table-wrap{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:var(--bg)}.tickets-page .data-table{font-size:var(--text-sm)}.tickets-page .data-table th{font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:.6875rem;padding:var(--space-3) var(--space-4);background:var(--bg-muted, rgba(0,0,0,.03));border-bottom:1px solid var(--border)}.tickets-page .data-table td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border)}.tickets-page .data-table tbody tr:last-child td{border-bottom:none}.tickets-page .data-table tbody tr:hover{background:var(--bg-muted, rgba(0,0,0,.03))}.col-num{font-variant-numeric:tabular-nums;text-align:right}@media(max-width:768px){.ticket-form-modal{max-width:none;width:100%;height:100%;border-radius:0;box-shadow:none}.ticket-form-modal .add-issue-modal-body{padding:var(--space-4);padding-left:max(var(--space-4),env(safe-area-inset-left));padding-right:max(var(--space-4),env(safe-area-inset-right));padding-bottom:max(var(--space-4),env(safe-area-inset-bottom));max-height:none}.ticket-form-header{padding:var(--space-4);padding-left:max(var(--space-4),env(safe-area-inset-left));padding-right:max(var(--space-4),env(safe-area-inset-right))}.ticket-form-header h2{font-size:1.0625rem}.ticket-form-body{gap:var(--space-6)}.ticket-form-block{padding:var(--space-4);gap:var(--space-3)}.ticket-form-block-title{font-size:.625rem;margin-bottom:var(--space-1)}.ticket-form-fields{gap:var(--space-3)}.ticket-form-fields .field input,.ticket-form-row .field input{padding:var(--space-2) var(--space-3);font-size:var(--text-sm)}.ticket-form-fields .label,.ticket-form-row .label{margin-bottom:var(--space-1)}.ticket-form-row{grid-template-columns:1fr;gap:var(--space-3)}.ticket-form-line-items{padding:var(--space-5);padding-top:var(--space-6)}.ticket-form-line-items-header{margin-bottom:var(--space-5);flex-wrap:wrap;gap:var(--space-2);align-items:center}.ticket-form-line-items-header .ticket-form-block-title{margin:0}.ticket-form-line-items .btn-sm{padding:var(--space-2) var(--space-4);font-size:var(--text-sm);min-height:44px;border-radius:var(--radius);font-weight:500}.ticket-form-table-wrap{margin-bottom:var(--space-4);-webkit-overflow-scrolling:touch;overflow-x:visible}.ticket-form-table{min-width:0;display:block}.ticket-form-table thead{display:none}.ticket-form-table tbody{display:block}.ticket-form-line-row{display:block;padding:var(--space-5);margin-bottom:var(--space-4);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 1px 2px #0000000a}.ticket-form-line-row:last-child{margin-bottom:0}.ticket-form-table .ticket-form-line-row td{display:block;width:100%;padding:var(--space-2) 0;border:none;font-size:.8125rem}.ticket-form-table .ticket-form-line-row td+td{padding-top:var(--space-4)}.ticket-form-table .ticket-form-line-row td.ticket-form-td-remove{border-top:1px solid var(--border);padding-top:var(--space-4);margin-top:var(--space-3);text-align:right}.ticket-form-table .ticket-form-line-row td[data-label]:before{content:attr(data-label);font-weight:600;font-size:.625rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);display:block;margin-bottom:var(--space-2)}.ticket-form-table .ticket-form-line-row td.ticket-form-td-remove:before{display:none}.ticket-form-table .ticket-form-line-row td.ticket-form-td-total{font-variant-numeric:tabular-nums;font-weight:500;color:var(--text)}.ticket-form-table .ticket-form-line-row td.ticket-form-td-qty input,.ticket-form-table .ticket-form-line-row td.ticket-form-td-price input{width:100%;max-width:120px;min-height:44px;padding:var(--space-2) var(--space-4);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);font-size:var(--text-sm);box-sizing:border-box}.ticket-form-table .ticket-form-line-row td.ticket-form-td-desc input{width:100%;min-width:0;min-height:44px;padding:var(--space-2) var(--space-4);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);font-size:var(--text-sm);box-sizing:border-box}.ticket-form-table .ticket-form-line-row td.ticket-form-td-desc input::placeholder{color:var(--text-subtle)}.ticket-form-table .ticket-form-line-row .ticket-form-remove-line{min-width:44px;min-height:44px;padding:var(--space-2) var(--space-4);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);color:var(--text-muted);font-size:1rem;display:inline-flex;align-items:center;justify-content:center;transition:color .15s,border-color .15s,background .15s}.ticket-form-table .ticket-form-line-row .ticket-form-remove-line:hover{color:var(--danger, #dc2626);border-color:var(--danger, #dc2626);background:var(--error-bg, #fef2f2)}.ticket-form-table th,.ticket-form-table td{padding:var(--space-2) var(--space-3);font-size:.8125rem}.ticket-form-th-qty,.ticket-form-td-qty{width:72px;min-width:72px}.ticket-form-th-desc{min-width:120px}.ticket-form-th-price,.ticket-form-td-price{width:88px;min-width:88px}.ticket-form-th-total{width:72px;min-width:72px}.ticket-form-th-remove{width:44px;min-width:44px}.ticket-form-td-qty input,.ticket-form-td-price input{width:100%;max-width:100%;min-width:0;padding:var(--space-2);min-height:40px;box-sizing:border-box}.ticket-form-td-desc input{min-width:0;padding:var(--space-2);min-height:40px}.ticket-form-remove-line{min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center}.ticket-form-total-row{padding-top:var(--space-5);margin-top:var(--space-3);font-size:1rem;gap:var(--space-5)}.ticket-form-total-value{min-width:80px}.ticket-form-actions{padding:var(--space-4);padding-left:max(var(--space-4),env(safe-area-inset-left));padding-right:max(var(--space-4),env(safe-area-inset-right));padding-bottom:max(var(--space-4),env(safe-area-inset-bottom));gap:var(--space-3)}.ticket-form-actions .btn-create,.ticket-form-actions .btn-secondary{min-height:44px;padding:var(--space-2) var(--space-4);font-size:var(--text-sm)}.tickets-page.view-content{max-width:none;padding-left:max(var(--space-3),env(safe-area-inset-left));padding-right:max(var(--space-3),env(safe-area-inset-right))}.tickets-page-header{margin-bottom:var(--space-4)}.tickets-page-header h1{font-size:1.25rem}.tickets-toolbar{margin-bottom:var(--space-4)}.tickets-page .table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:var(--radius-sm)}.tickets-page .data-table{font-size:.8125rem;min-width:480px}.tickets-page .data-table th,.tickets-page .data-table td{padding:var(--space-2) var(--space-3)}}@media(max-width:480px){.ticket-form-modal .add-issue-modal-body,.ticket-form-header{padding:var(--space-3);padding-left:max(var(--space-3),env(safe-area-inset-left));padding-right:max(var(--space-3),env(safe-area-inset-right))}.ticket-form-header h2{font-size:1rem}.ticket-form-body{gap:var(--space-5)}.ticket-form-block{padding:var(--space-3);gap:var(--space-2)}.ticket-form-fields .field input,.ticket-form-row .field input{padding:var(--space-2) var(--space-3)}.ticket-form-line-items{padding:var(--space-3);padding-top:var(--space-4)}.ticket-form-line-items-header{margin-bottom:var(--space-3)}.ticket-form-table th,.ticket-form-table td{padding:var(--space-2)}.ticket-form-actions{padding:var(--space-3);padding-left:max(var(--space-3),env(safe-area-inset-left));padding-right:max(var(--space-3),env(safe-area-inset-right));padding-bottom:max(var(--space-3),env(safe-area-inset-bottom))}.tickets-page.view-content{padding-left:max(var(--space-2),env(safe-area-inset-left));padding-right:max(var(--space-2),env(safe-area-inset-right))}.tickets-page .data-table th,.tickets-page .data-table td{padding:var(--space-2)}}.add-issue-telegram-hint{margin:0;font-size:var(--text-sm);color:var(--text-muted)}.add-issue-photo-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center}.add-issue-camera-preview{display:flex;flex-direction:column;gap:var(--space-2);margin-top:var(--space-2)}.add-issue-camera-preview video{max-width:100%;max-height:200px;background:var(--bg);border-radius:var(--radius)}.add-issue-photos-list{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);margin-top:var(--space-2)}.add-issue-photo-item{position:relative;width:72px;height:72px;flex-shrink:0;border-radius:var(--radius);border:1px solid var(--border);overflow:hidden;background:var(--surface)}.add-issue-photo-item img{width:100%;height:100%;object-fit:cover;display:block}.add-issue-photo-item.add-issue-photo-uploaded{display:block;text-decoration:none}.add-issue-photo-item.add-issue-photo-uploaded img{width:100%;height:100%;object-fit:cover}.add-issue-photo-uploaded-wrap{display:flex;flex-direction:column;align-items:center;gap:var(--space-1);max-width:88px;position:relative}.add-issue-photo-remove{position:absolute;top:2px;right:2px;width:22px;height:22px;padding:0;font-size:1rem;line-height:1;border-radius:50%;background:var(--bg);border:1px solid var(--border);color:var(--text-muted);cursor:pointer;box-shadow:0 1px 2px #0000001a;z-index:1}.add-issue-photo-remove:hover{color:var(--danger, #c00);border-color:var(--danger, #c00);background:#fff}.add-issue-photo-uploaded-by{font-size:.65rem;color:var(--text-muted);text-align:center;line-height:1.2;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.add-issue-photo-item.add-issue-photo-loading{display:flex;align-items:center;justify-content:center;font-size:var(--text-sm);color:var(--text-muted)}.add-issue-photo-item .btn-icon{position:absolute;top:2px;right:2px;width:24px;height:24px;padding:0;font-size:1rem;line-height:1;border-radius:50%;background:var(--bg);border:1px solid var(--border);color:var(--text);cursor:pointer;box-shadow:0 1px 3px #0000001a}.add-issue-photo-uploading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#0006;color:#fff;font-size:1.25rem;border-radius:var(--radius)}.add-issue-photos-count{font-size:var(--text-sm);color:var(--text-muted)}.add-issue-photo-error{margin:var(--space-2) 0 0;font-size:var(--text-sm);color:var(--danger, #c00)}.add-issue-form-actions{display:flex;gap:var(--space-2)}.add-job-site-section{margin-bottom:var(--space-6)}.add-job-site-section .section-title{margin-bottom:var(--space-4);font-size:var(--text-base);font-weight:600;color:var(--text)}.add-job-site-form{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3)}.add-job-site-form input,.add-job-site-form select{padding:var(--space-2) var(--space-4);font-size:var(--text-sm);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);min-width:140px;transition:border-color .15s,box-shadow .15s}.add-job-site-form input:focus,.add-job-site-form select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #2085cf1f}.jobsites-page{max-width:900px;margin-left:auto;margin-right:auto}.jobsites-page-header{margin-bottom:var(--space-4)}.jobsites-page-header h1{font-size:1.375rem;font-weight:600;letter-spacing:-.02em}.jobsites-desc{margin-bottom:var(--space-6);color:var(--text-muted);font-size:var(--text-sm)}.jobsites-add-card{padding:var(--space-6);margin-bottom:var(--space-6);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.jobsites-add-title{margin:0 0 var(--space-4) 0;font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted)}.jobsites-add-form{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:var(--space-4);align-items:end}.jobsites-add-form .field{display:flex;flex-direction:column;gap:var(--space-1)}.jobsites-add-form .label{font-size:var(--text-xs);font-weight:500;color:var(--text-muted)}.jobsites-add-form input,.jobsites-add-form select{padding:var(--space-2) var(--space-3);font-size:var(--text-sm);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);color:var(--text);width:100%;transition:border-color .15s,box-shadow .15s}.jobsites-add-form input:focus,.jobsites-add-form select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px #4a8bc226}.jobsites-add-actions{display:flex;align-items:flex-end}.jobsites-add-actions .btn-create{min-height:38px}.jobsites-table-wrap{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:var(--bg)}.jobsites-table{width:100%;font-size:var(--text-sm)}.jobsites-table th,.jobsites-table td{padding:var(--space-3) var(--space-4);text-align:left;vertical-align:middle;border-bottom:1px solid var(--border)}.jobsites-table thead th{font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:.6875rem;background:var(--bg-muted, rgba(0, 0, 0, .03))}.jobsites-table tbody tr:last-child td{border-bottom:none}.jobsites-table tbody tr:hover{background:var(--bg-muted, rgba(0, 0, 0, .02))}.jobsites-cell-name{font-weight:500;color:var(--text)}.jobsites-cell-address{color:var(--text-muted);font-size:.8125rem}.jobsites-status-select{appearance:none;padding:var(--space-1) var(--space-3);padding-right:1.75rem;font-size:.8125rem;font-weight:600;line-height:1.4;border:1px solid var(--border);border-radius:999px;cursor:pointer;min-width:0;width:auto;max-width:120px;background:var(--bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 12 12' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 4.5 L6 7.5 L9 4.5'/%3E%3C/svg%3E") no-repeat right var(--space-2) center;transition:border-color .15s ease}.jobsites-status-select:hover{border-color:var(--text-muted)}.jobsites-status-select:focus{outline:none;border-color:var(--accent)}.jobsites-status-select--open{background-color:#22c55e14;border-color:#22c55e40;color:#16a34a}.jobsites-status-select--closed,.jobsites-status-select--resolved{background-color:var(--surface);border-color:var(--border);color:var(--text-muted)}.jobsites-delete-btn{opacity:.6}.jobsites-delete-btn:hover{opacity:1}.tabs{display:flex;gap:var(--space-6);margin-bottom:var(--space-4);border-bottom:1px solid var(--border)}.tab{padding:var(--space-2) 0;font-size:var(--text-sm);font-weight:500;color:var(--text-muted);background:none;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer;transition:color .15s,border-color .15s}.tab:hover{color:var(--text)}.tab.active{color:var(--text);border-bottom-color:var(--sidebar-accent)}.issues-page .tabs .tab{padding:var(--space-2) 0}.issues-page .tabs .tab.active{font-weight:600}.issues-page{max-width:1200px}.issues-page-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap;margin-bottom:var(--space-3)}.issues-page-header h1{margin:0;font-size:1.5rem;font-weight:700;letter-spacing:-.02em;color:var(--text)}.issues-page-header .search-wrap{min-width:220px;flex:1;max-width:320px}.issues-page-header .search-input{width:100%;padding:var(--space-2) var(--space-4);padding-left:2.25rem;font-size:var(--text-sm);border-radius:var(--radius);border:1px solid var(--border);background:var(--bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.35-4.35'/%3E%3C/svg%3E") no-repeat .625rem center;color:var(--text);transition:border-color .15s,box-shadow .15s}.issues-page-header .search-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px #2085cf1f}.issues-page-header .search-input::placeholder{color:var(--text-muted)}.issues-page .tabs{margin-bottom:0;padding-bottom:var(--space-2);border-bottom:1px solid var(--border)}.issues-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-4);margin-bottom:var(--space-4);padding:var(--space-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.issues-toolbar-actions{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2)}.issues-filter-row{display:flex;align-items:center;gap:var(--space-2);margin-left:auto}.issues-filter-row-label{font-size:var(--text-sm);font-weight:500;color:var(--text-muted);margin-right:var(--space-1)}.issues-filter-select{padding:var(--space-2) var(--space-3);font-size:var(--text-sm);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);color:var(--text);min-width:120px}.issues-filter-select:focus{outline:none;border-color:var(--accent)}.issues-fab{position:fixed;bottom:max(var(--space-5),env(safe-area-inset-bottom));right:max(var(--space-5),env(safe-area-inset-right));z-index:40;display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-5);min-height:48px;font-size:var(--text-sm);font-weight:600;color:#fff;background:#22c55e;border:none;border-radius:999px;box-shadow:0 4px 14px #22c55e66;cursor:pointer;transition:background .15s,transform .15s,box-shadow .15s;-webkit-tap-highlight-color:transparent}.issues-fab:hover:not(:disabled){background:#16a34a;box-shadow:0 6px 20px #22c55e73;transform:translateY(-1px)}.issues-fab:active:not(:disabled){transform:translateY(0)}.issues-fab:disabled{opacity:.6;cursor:not-allowed;box-shadow:0 2px 8px #00000026}.issues-fab-icon{display:flex;align-items:center;justify-content:center;width:24px;height:24px;font-size:1.25rem;line-height:1;font-weight:400}.issues-fab-label{display:none}@media(min-width:480px){.issues-fab-label{display:inline}}.issues-table-wrap{overflow-x:auto}.issues-list-cards{display:none}.issues-table .col-title{font-weight:500;max-width:180px}.issues-table .col-description{max-width:280px;font-size:var(--text-sm);color:var(--text-muted);line-height:1.4}.issue-type-badge{display:inline-block;padding:2px 8px;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;border-radius:var(--radius-sm)}.issue-type-badge--issue{background:#2085cf1f;color:var(--sidebar-accent)}.issue-type-badge--safety{background:#eab30826;color:#b45309}.issue-type-badge--upForReview{background:#8b5cf61f;color:#7c3aed}.issue-type-badge--punch{background:#22c55e1f;color:#15803d}.status-badge{display:inline-block;padding:2px 8px;font-size:.7rem;font-weight:500;border-radius:var(--radius-sm)}.status-badge--open{background:#22c55e1f;color:#16a34a}.status-badge--closed{background:var(--surface);color:var(--text-muted)}.status-badge--resolved{background:#22c55e1f;color:#16a34a}.status-badge--upForReview,.status-badge--submittal-pending{background:#eab30826;color:#b45309}.status-badge--submittal-inReview{background:#3b82f61f;color:#2563eb}.status-badge--submittal-approved{background:#22c55e1f;color:#16a34a}.status-badge--submittal-rejected{background:#ef44441f;color:#dc2626}.submittal-attachments-list{list-style:none;margin:var(--space-2) 0 0 0;padding:0;display:flex;flex-direction:column;gap:var(--space-1)}.submittal-attachment-item{display:flex;align-items:center;justify-content:space-between;padding:var(--space-1) var(--space-2);background:var(--bg-muted, #f5f5f5);border-radius:var(--radius);font-size:var(--text-sm)}.submittal-attachment-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.submittal-attachment-remove{flex-shrink:0}.detail-panel-attachments{margin-top:var(--space-3)}.detail-panel-attachments-list{display:flex;flex-direction:column;gap:var(--space-1);margin-bottom:var(--space-2);max-height:160px;overflow-y:auto}.detail-panel-attachment-item{display:flex;align-items:center;justify-content:space-between;padding:var(--space-1) var(--space-2);background:var(--bg-muted, #f5f5f5);border-radius:var(--radius);font-size:var(--text-sm)}.detail-panel-attachment-link{color:var(--sidebar-accent, #2563eb);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.detail-panel-attachment-link:hover{text-decoration:underline}.detail-panel-attachment-loading{color:var(--text-muted)}.detail-panel-attachment-primary{display:flex;align-items:center;gap:var(--space-2);flex:1;min-width:0}.detail-panel-attachment-view,.detail-panel-attachment-remove{flex-shrink:0}.col-due{white-space:nowrap}.due-date{font-size:var(--text-sm);color:var(--text)}.due-date--overdue{color:var(--danger, #b91c1c);font-weight:500}.overdue-badge{display:inline-block;margin-left:var(--space-2);padding:2px 6px;font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:#fff;background:var(--danger, #b91c1c);border-radius:var(--radius-sm)}tr.issue-row--overdue .col-due{background:#b91c1c0f}.detail-panel-due-wrap{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2)}.detail-panel-due-wrap .field-readonly.due-date--overdue{color:var(--danger, #b91c1c)}.issues-card-meta{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--text-muted)}.issues-card-due{font-size:var(--text-sm)}.issues-card-due.due-date--overdue{color:var(--danger, #b91c1c);font-weight:500}.issues-card--overdue{border-color:#b91c1c59;background:#b91c1c08}@media(max-width:768px){.issues-page-header{flex-direction:column;align-items:stretch;gap:var(--space-3);padding-left:0;padding-right:0}.issues-page-header .search-wrap{width:100%}.issues-page-header .search-input{width:100%;min-width:0}.issues-toolbar{flex-direction:column;align-items:stretch;gap:var(--space-3);padding:var(--space-3);padding-left:max(var(--space-3),env(safe-area-inset-left));padding-right:max(var(--space-3),env(safe-area-inset-right))}.issues-toolbar-actions{display:flex;flex-wrap:wrap;gap:var(--space-2)}.issues-toolbar .btn-create,.issues-toolbar .btn-secondary,.issues-toolbar .btn-icon{min-height:44px;padding:var(--space-3) var(--space-4)}.issues-filter-row-label{margin-right:0}.issues-toolbar .toolbar-divider{display:none}.issues-filter-row{margin-left:0;margin-top:var(--space-2);padding-top:var(--space-2);border-top:1px solid var(--border);gap:var(--space-2)}.issues-filter-select{flex:1;min-width:0}.issues-table-wrap{display:none}.issues-list-cards{display:flex;flex-direction:column;gap:var(--space-3);padding:0 max(var(--space-4),env(safe-area-inset-left));padding-bottom:var(--space-6)}.issues-card{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2);width:100%;padding:var(--space-4);text-align:left;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;transition:background .15s,border-color .15s,box-shadow .15s;-webkit-tap-highlight-color:transparent}.issues-card:hover,.issues-card:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px #2085cf26}.issues-card.selected{border-color:var(--accent);background:#2085cf0f;box-shadow:0 0 0 2px #2085cf33}.issues-card-row{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap}.issues-card-check{display:flex;align-items:center}.issues-card-check input{width:18px;height:18px;cursor:pointer}.issues-card-title{font-size:var(--text-base);font-weight:600;color:var(--text);line-height:1.3}.issues-card-desc{font-size:var(--text-sm);color:var(--text-muted);line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.issues-card-site{font-size:var(--text-sm);color:var(--text-muted)}.issues-page .tabs{margin-bottom:var(--space-3);padding-left:max(var(--space-4),env(safe-area-inset-left));padding-right:max(var(--space-4),env(safe-area-inset-right))}.view-content-list.issues-page{padding-bottom:env(safe-area-inset-bottom,0)}}.toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-4)}.btn-create{padding:var(--space-2) var(--space-4);font-size:var(--text-sm);font-weight:600;color:var(--bg);background:#22c55e;border:none;border-radius:var(--radius);cursor:pointer}.btn-create:hover{background:#16a34a}.btn-secondary{padding:var(--space-2) var(--space-4);font-size:var(--text-sm);font-weight:500;color:var(--sidebar-accent);background:#2085cf1a;border:1px solid rgba(32,133,207,.3);border-radius:var(--radius);cursor:pointer}.btn-secondary:hover,.btn-secondary.active{background:#2085cf26}.btn-icon{padding:var(--space-2) var(--space-3);font-size:var(--text-sm);color:var(--text-muted);background:none;border:none;border-radius:var(--radius);cursor:pointer}.btn-icon:hover{color:var(--text);background:var(--surface)}.toolbar-divider{width:1px;height:20px;background:var(--border);margin:0 var(--space-2)}.table-wrap{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-card);overflow:hidden;box-shadow:var(--shadow-card)}.data-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.data-table th{padding:var(--space-4) var(--space-5);text-align:left;font-weight:600;font-size:.6875rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;background:var(--surface);border-bottom:1px solid var(--border)}.data-table td{padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border);color:var(--text)}.data-table tbody tr{cursor:pointer;transition:background .1s}.data-table tbody tr:hover{background:#00000005}html.dark .data-table tbody tr:hover{background:#ffffff0a}.data-table tbody tr.selected{background:#2085cf0f}.data-table tbody tr.selected td:first-child{border-left:3px solid var(--sidebar-accent)}.data-table .col-check{width:40px;vertical-align:middle}.data-table .col-check input{cursor:pointer;accent-color:var(--sidebar-accent)}.view-content-list{max-width:none;display:flex;flex-direction:column;gap:0;position:relative}.detail-panel{position:fixed;top:0;right:0;bottom:0;width:min(400px,90vw);background:var(--bg);border-left:1px solid var(--border);box-shadow:-4px 0 20px #00000014;z-index:60;display:flex;flex-direction:column;animation:panelSlide .2s ease-out}@media(max-width:768px){.detail-panel{width:100%;max-width:none;inset:0;height:100%;height:100dvh;border-left:none;border-radius:0}.detail-panel-header,.detail-panel-body{padding-left:max(var(--space-5),env(safe-area-inset-left));padding-right:max(var(--space-5),env(safe-area-inset-right))}}.detail-panel-backdrop{position:fixed;inset:0;background:#0003;z-index:55;cursor:pointer;animation:viewFade .15s ease-out}@keyframes panelSlide{0%{transform:translate(100%)}to{transform:translate(0)}}.detail-panel-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border)}.detail-panel-header h2{margin:0;font-size:var(--text-base);font-weight:600;color:var(--text)}.detail-panel-close{width:32px;height:32px;padding:0;font-size:1.25rem;line-height:1;color:var(--text-muted);background:none;border:none;border-radius:var(--radius);cursor:pointer}.detail-panel-close:hover{color:var(--text);background:var(--surface)}.detail-panel-body{flex:1;overflow:auto;padding:var(--space-5);display:flex;flex-direction:column;gap:var(--space-4)}.detail-panel-status-bar{display:flex;flex-direction:column;gap:var(--space-2);padding-bottom:var(--space-4);margin-bottom:var(--space-3);border-bottom:1px solid var(--border)}.detail-panel-status-bar-label{font-size:.6875rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted)}.detail-panel-status-select{appearance:none;width:100%;max-width:200px;padding:var(--space-2) var(--space-4);padding-right:2.25rem;font-size:var(--text-sm);font-weight:600;line-height:1.4;color:var(--text);background:var(--bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 4.5 L6 7.5 L9 4.5'/%3E%3C/svg%3E") no-repeat right var(--space-3) center;border:1px solid var(--border);border-radius:999px;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease}.detail-panel-status-select:hover{border-color:var(--text-muted)}.detail-panel-status-select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px #4a8bc233}.detail-panel-status-select--open{background-color:#22c55e14;border-color:#22c55e40;color:#16a34a}.detail-panel-status-select--closed{background-color:var(--surface);border-color:var(--border);color:var(--text-muted)}.detail-panel-status-select--resolved{background-color:#22c55e14;border-color:#22c55e40;color:#16a34a}.detail-panel-status-select--upForReview{background-color:#eab3081a;border-color:#eab30859;color:#b45309}.status-badge--large{display:inline-block;padding:var(--space-2) var(--space-4);font-size:var(--text-sm);font-weight:600;border-radius:999px;letter-spacing:.02em}.detail-panel-body .field input,.detail-panel-body .field textarea{width:100%}.detail-panel-body textarea{resize:vertical;min-height:80px}.detail-panel-body .detail-panel-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}.detail-panel-footer{display:flex;gap:var(--space-2);padding:var(--space-4) var(--space-5);border-top:1px solid var(--border);flex-shrink:0}.detail-panel-photos-field{margin-top:var(--space-2)}.detail-panel-photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));gap:var(--space-3);margin-top:var(--space-2)}.detail-panel-photos-large{display:flex;flex-direction:column;gap:var(--space-5);margin-top:var(--space-3)}.detail-panel-photo-card{display:flex;flex-direction:column;gap:var(--space-2);border-radius:var(--radius);border:1px solid var(--border);overflow:hidden;background:var(--surface)}.detail-panel-photo-card-link{display:block;line-height:0;background:var(--bg)}.detail-panel-photo-card-link img{width:100%;height:auto;max-height:70vh;object-fit:contain;display:block;cursor:pointer}.detail-panel-photo-caption{margin:0;padding:var(--space-2) var(--space-4);font-size:var(--text-sm);font-weight:500;color:var(--text-muted)}.detail-panel-photo-card-footer{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-2);padding:var(--space-2) var(--space-4);padding-top:0}.detail-panel-photo-card-footer .detail-panel-photo-caption{padding:0;flex:1;min-width:0}.detail-panel-photo-remove{padding:var(--space-1) var(--space-2);font-size:var(--text-sm);color:var(--text-muted);background:none;border:1px solid var(--border);border-radius:var(--radius);cursor:pointer}.detail-panel-photo-remove:hover{color:var(--danger, #c00);border-color:var(--danger, #c00);background:#cc00000f}.detail-panel-add-photos{margin-top:var(--space-3)}.detail-panel-add-photos .btn-secondary{margin-top:var(--space-1)}.detail-panel-comments{margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--border)}.detail-panel-comments-list{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-3);max-height:200px;overflow-y:auto}.detail-panel-comment{padding:var(--space-2) var(--space-3);background:var(--bg-muted, #f5f5f5);border-radius:var(--radius)}.detail-panel-comment-meta{font-size:var(--text-xs);color:var(--text-muted);display:block;margin-bottom:var(--space-1)}.detail-panel-comment-text{margin:0;font-size:var(--text-sm);white-space:pre-wrap;word-break:break-word}.detail-panel-comment-add{display:flex;flex-direction:column;gap:var(--space-2)}.detail-panel-comment-input{width:100%;padding:var(--space-2);font-size:var(--text-sm);border:1px solid var(--border);border-radius:var(--radius);resize:vertical;min-height:60px}.detail-panel-audit{margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--border)}.detail-panel-audit-list{display:flex;flex-direction:column;gap:var(--space-1);max-height:180px;overflow-y:auto;font-size:var(--text-sm)}.detail-panel-audit-entry{padding:var(--space-1) var(--space-2);background:var(--bg-muted, #f8f8f8);border-radius:var(--radius);color:var(--text)}.detail-panel-audit-meta{color:var(--text-muted);margin-right:var(--space-2)}.detail-panel-audit-action{font-weight:500}.detail-panel-audit-details{color:var(--text-muted);font-style:italic}.detail-panel-photo-card.detail-panel-photo-loading{min-height:120px;display:flex;align-items:center;justify-content:center;font-size:var(--text-sm);color:var(--text-muted)}.detail-panel-photo-card.detail-panel-photo-fallback{padding:var(--space-4);font-weight:500;color:var(--accent);text-decoration:none;display:flex;align-items:center;justify-content:center;min-height:100px}.detail-panel-photo-link{display:flex;align-items:center;justify-content:center;width:100%;aspect-ratio:1;min-height:80px;max-height:140px;border-radius:var(--radius);border:1px solid var(--border);overflow:hidden;background:var(--surface);text-decoration:none;color:var(--text-muted);font-size:var(--text-sm);transition:border-color .15s,box-shadow .15s}.detail-panel-photo-link:hover{border-color:var(--accent);box-shadow:0 0 0 2px #2085cf33}.detail-panel-photo-link img{width:100%;height:100%;object-fit:cover;display:block}.detail-panel-photo-link.detail-panel-photo-fallback{font-weight:500;color:var(--accent)}.detail-panel-photo-loading{display:flex;align-items:center;justify-content:center;width:100%;height:100%;min-height:80px;font-size:var(--text-sm);color:var(--text-muted)}@keyframes viewFade{0%{opacity:0}to{opacity:1}}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--space-8);background:var(--bg)}.login-card{width:100%;max-width:380px;text-align:center;padding:var(--space-10);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg)}.select-job-site-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--space-6);background:var(--page-bg)}.select-job-site-card{width:100%;max-width:400px;padding:var(--space-8) var(--space-8);border:1px solid var(--border);border-radius:var(--radius-card);background:var(--bg);box-shadow:var(--shadow-card)}.select-job-site-header{text-align:center;margin-bottom:var(--space-6);padding-bottom:var(--space-6);border-bottom:1px solid var(--border)}.select-job-site-logo-img{display:block;max-width:180px;height:auto;margin:0 auto var(--space-5);object-fit:contain}.select-job-site-header h1{margin:0 0 var(--space-2);font-size:1.25rem;font-weight:600;color:var(--text);letter-spacing:-.02em;line-height:1.3}.select-job-site-desc{font-size:var(--text-sm);color:var(--text-muted);line-height:var(--leading-relaxed);max-width:28ch;margin:0 auto}.select-job-site-list{display:flex;flex-direction:column;gap:var(--space-2)}.select-job-site-option{display:flex;align-items:center;gap:var(--space-4);width:100%;padding:var(--space-3) var(--space-4);text-align:left;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:border-color .15s,background .15s,box-shadow .15s}.select-job-site-option:hover{background:var(--surface);border-color:#2085cf59;box-shadow:0 0 0 2px #2085cf14}.select-job-site-option-all{border-style:dashed;background:var(--surface)}.select-job-site-option-all:hover{background:#2085cf0a;border-color:var(--sidebar-accent)}.select-job-site-option-icon{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:var(--radius-sm);background:#2085cf14;color:var(--sidebar-accent)}.select-job-site-option-all .select-job-site-option-icon{background:transparent;color:var(--text-muted)}.select-job-site-option-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.select-job-site-option-label,.select-job-site-option-name{font-size:var(--text-sm);font-weight:600;color:var(--text)}.select-job-site-option-meta{font-size:.75rem;color:var(--text-subtle);line-height:1.3}.login-header{margin-bottom:var(--space-8)}.logo{display:block;max-width:220px;height:auto;margin:0 auto var(--space-8);object-fit:contain}.login-header h1{margin:0;font-size:var(--text-2xl);font-weight:600;color:var(--text);letter-spacing:-.02em}.login-form{display:flex;flex-direction:column;gap:var(--space-5);text-align:left}.login-password-wrap{position:relative;display:block}.login-password-wrap input{padding-right:2.75rem;width:100%}.login-password-toggle{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;padding:0;border:none;background:none;color:var(--text-muted);cursor:pointer;border-radius:var(--radius)}.login-password-toggle:hover{color:var(--text);background:var(--bg-hover)}.login-password-toggle:focus{outline:2px solid var(--sidebar-accent);outline-offset:2px}.forgot-link{margin-top:calc(var(--space-4) * -1);background:none;border:none;color:var(--sidebar-accent);font-size:var(--text-sm);font-weight:600;cursor:pointer;text-align:left;padding:0}.forgot-link:hover{text-decoration:underline}.forgot-link:disabled{opacity:.6;cursor:default}.forgot-modal-backdrop{position:fixed;inset:0;background:#00000073;z-index:120}.forgot-modal{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);width:min(520px,92vw);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-card);box-shadow:0 16px 48px #00000038;z-index:130;overflow:hidden}.forgot-modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border)}.forgot-modal-header h2{margin:0;font-size:var(--text-base);font-weight:700;color:var(--text)}.forgot-modal-close{border:none;background:none;font-size:1.5rem;line-height:1;padding:0;cursor:pointer;color:var(--text-muted)}.forgot-modal-body{padding:var(--space-5);display:flex;flex-direction:column;gap:var(--space-4)}.forgot-message{padding:var(--space-3) var(--space-4);border-radius:var(--radius);font-size:var(--text-sm);font-weight:600}.forgot-message.ok{background:#22c55e1f;color:#15803d;border:1px solid rgba(34,197,94,.25)}.forgot-message.error{background:var(--error-bg);color:var(--error-text);border:1px solid rgba(185,28,28,.2)}.reset-code-box{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:var(--space-4)}.reset-code-title{font-size:var(--text-sm);color:var(--text-muted);font-weight:600;margin-bottom:var(--space-2)}.reset-code-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.reset-code{font-size:1.25rem;font-weight:800;letter-spacing:.12em;color:var(--text)}.btn-copy{min-width:88px}.forgot-actions{display:flex;gap:var(--space-3);justify-content:flex-end}@media(max-width:480px){.forgot-actions{flex-direction:column}}.field{display:flex;flex-direction:column;gap:var(--space-2)}.field .label{font-size:var(--text-sm);font-weight:500;color:var(--text)}.field input{padding:var(--space-3) var(--space-4);font-size:var(--text-base);border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);color:var(--text);transition:border-color .15s}.field input::placeholder{color:var(--text-subtle)}.field input:focus{outline:none;border-color:var(--accent)}.login-error{padding:var(--space-3) var(--space-4);font-size:var(--text-sm);color:var(--error-text);background:var(--error-bg);border-radius:var(--radius)}.remember-me{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--text-muted);cursor:pointer;-webkit-user-select:none;user-select:none}.remember-me input{width:1rem;height:1rem;accent-color:var(--accent);cursor:pointer}.submit-btn{margin-top:var(--space-1);padding:var(--space-3) var(--space-5);font-size:var(--text-base);font-weight:600;color:var(--bg);background:var(--accent);border:none;border-radius:var(--radius);cursor:pointer;transition:background .15s;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2)}.submit-btn:disabled{opacity:.8;cursor:not-allowed}.submit-btn .spinner{width:1rem;height:1rem;border:2px solid rgba(255,255,255,.4);border-top-color:var(--bg);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.submit-btn:hover:not(:disabled){background:var(--accent-hover)}.submit-btn:active{transform:scale(.99)}.submit-btn:disabled:active{transform:none}.login-footer{margin-top:var(--space-8);padding-top:var(--space-6);border-top:1px solid var(--border);font-size:.6875rem;color:var(--text-subtle);text-align:center;line-height:1.5}.login-footer p{margin:0}body.panel-open{overflow:hidden}@media(max-width:768px){body.mobile-menu-open,body.panel-open{overflow:hidden}.app-bar{display:none}.topbar{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-4);padding-left:max(var(--space-4),env(safe-area-inset-left));padding-right:max(var(--space-4),env(safe-area-inset-right));padding-top:max(var(--space-3),env(safe-area-inset-top));background:var(--bg);border-bottom:1px solid var(--border);position:fixed;top:0;left:0;right:0;z-index:50}.app-body{padding-top:52px}.menu-btn{display:flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;background:none;border:none;border-radius:var(--radius);cursor:pointer;color:var(--text)}.menu-btn:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.menu-icon{display:block;width:20px;height:2px;background:currentColor;box-shadow:0 -6px 0 currentColor,0 6px 0 currentColor}.topbar-title{font-size:var(--text-base);font-weight:600;color:var(--text)}.sidebar-backdrop{display:block;position:fixed;inset:0;background:#00000059;z-index:90;opacity:0;pointer-events:none;transition:opacity .2s ease}.app-layout.sidebar-open .sidebar-backdrop{opacity:1;pointer-events:auto}.sidebar{position:fixed;top:0;left:0;bottom:0;width:min(280px,85vw);max-width:280px;z-index:100;transform:translate(-100%);transition:transform .25s ease;box-shadow:4px 0 24px #0000000f;border-right:1px solid var(--border)}.app-layout.sidebar-open .sidebar{transform:translate(0)}.sidebar-nav{padding-top:max(var(--space-4),env(safe-area-inset-top))}.nav-item{min-height:44px;padding:var(--space-2) var(--space-5);font-size:var(--text-base)}.main-content{padding:var(--space-5) var(--space-4);padding-left:max(var(--space-4),env(safe-area-inset-left));padding-right:max(var(--space-4),env(safe-area-inset-right));padding-bottom:max(var(--space-5),env(safe-area-inset-bottom))}.view-content h1{font-size:var(--text-lg)}.card-grid{grid-template-columns:1fr}}@media(max-width:480px){.login-page{padding:var(--space-4);align-items:flex-start;padding-top:max(var(--space-4),env(safe-area-inset-top));min-height:100vh;min-height:100dvh}.login-card{padding:var(--space-6) var(--space-5);margin:auto 0}.login-header h1{font-size:var(--text-xl)}.field input,.submit-btn{min-height:48px}.remember-me{min-height:44px;align-items:center}.submit-btn{margin-top:var(--space-2)}}.print-report-host{position:absolute;left:-9999px;top:0;width:100%;visibility:hidden;height:0;overflow:hidden;pointer-events:none}@media print{html,body{overflow:visible!important;height:auto!important}body *{visibility:hidden}.print-report-host,.print-report-host *{visibility:visible}.app-layout>*:not(.print-report-host){display:none!important}.print-report-host{position:absolute!important;left:0!important;top:0!important;width:100%!important;height:auto!important;min-height:auto!important;overflow:visible!important;pointer-events:auto!important;background:#fff}.print-report-wrap{font-family:system-ui,-apple-system,sans-serif;font-size:12pt;color:#111}.print-report-host .print-report-wrap{display:block!important}.print-report-host .print-page{display:flex!important;flex-direction:column!important;page-break-after:always!important;break-after:page!important;min-height:0!important;padding:16px!important}.print-report-host .print-page:last-child{page-break-after:auto!important;break-after:auto!important}.print-report-host .print-page+.print-page{page-break-before:always!important;break-before:page!important}}.drawing-view-panel{max-width:95vw;width:900px}.drawing-view-body{padding:0;display:flex;flex-direction:column;min-height:70vh}.drawing-view-toolbar{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border-bottom:1px solid var(--border, #e5e7eb);flex-shrink:0}.drawing-zoom-btn{min-width:32px;padding:var(--space-1) var(--space-2);font-size:1rem;font-weight:600;line-height:1}.drawing-zoom-label{margin-left:auto;font-size:var(--text-sm);color:var(--text-muted)}.drawing-view-canvas-wrap{flex:1;min-height:400px;overflow:auto;padding:var(--space-4);background:var(--bg-muted, #f3f4f6)}.drawing-view-page{margin-bottom:var(--space-4);box-shadow:0 1px 3px #0000001a;background:#fff}.drawing-view-page:last-child{margin-bottom:0}.drawing-pdf-canvas{display:block}.drawing-view-loading{margin:var(--space-8) 0;text-align:center;color:var(--text-muted)}.drawing-pdf-iframe{width:100%;min-height:70vh;border:1px solid var(--border, #e5e7eb);border-radius:var(--radius-sm, 4px);background:#fff}.submittal-document-view-panel .drawing-view-body{min-height:60vh}.submittal-document-image-wrap{flex:1;min-height:400px;overflow:auto;padding:var(--space-4);background:var(--bg-muted, #f3f4f6);display:flex;align-items:flex-start;justify-content:center}.submittal-document-image{max-width:100%;height:auto;display:block;box-shadow:0 1px 3px #0000001a}.submittal-document-embed-wrap{flex:1;min-height:400px;overflow:hidden;display:flex;flex-direction:column}.submittal-document-iframe{flex:1;width:100%;min-height:60vh;border:none;background:#fff}.drawing-view-hint{margin:12px 0 0;padding:var(--space-2) var(--space-4);font-size:var(--text-sm);border-top:1px solid var(--border, #e5e7eb);flex-shrink:0;display:flex;align-items:center;flex-wrap:wrap;gap:var(--space-2)}.drawing-view-hint a{color:var(--sidebar-accent, #2563eb)}.drawing-view-hint-actions{display:flex;gap:var(--space-2);margin-left:auto}.drawing-view-download-btn,.drawing-view-delete-btn{flex-shrink:0}.drawing-view-delete-btn{color:var(--text-muted)}.drawing-view-delete-btn:hover{color:#dc2626}.btn-icon-danger{color:var(--text-muted)}.btn-icon-danger:hover{color:#dc2626}.drawing-row-actions{display:flex;align-items:center;gap:var(--space-2)}
