:root{--bg:#f4f6f8;--surface:#ffffff;--surface-muted:#eef2f5;--text:#18202a;--muted:#647182;--line:#d9e0e7;--primary:#176b87;--primary-dark:#104e63;--accent:#8752c4;--warning:#9d6400;--danger:#b42318;--ok:#14764f;--shadow:0 12px 32px rgba(24,32,42,0.08);--shadow-soft:0 1px 2px rgba(24,32,42,0.08)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,Arial,Hiragino Sans,Yu Gothic,sans-serif;line-height:1.5}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.shell{display:grid;grid-template-columns:264px minmax(0,1fr);min-height:100vh}.sidebar{background:#111827;color:#f8fafc;padding:18px 14px;position:-webkit-sticky;position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:18px}.brand{align-items:center;display:flex;gap:10px;min-height:48px;padding:4px 6px}.brand-mark{align-items:center;background:linear-gradient(135deg,#38bdf8,#a78bfa);border-radius:8px;color:#fff;display:inline-flex;font-size:13px;font-weight:800;height:38px;justify-content:center;width:38px}.brand small,.brand strong{display:block}.brand strong{font-size:15px;line-height:1.1}.brand small{color:#9ca3af;font-size:12px}.nav{display:grid;grid-gap:3px;gap:3px}.nav-link{align-items:center;border-radius:7px;color:#cbd5e1;display:flex;font-size:14px;gap:10px;min-height:38px;padding:8px 10px}.nav-link:hover{color:#fff}.nav-icon,.nav-link:hover{background:rgba(255,255,255,.08)}.nav-icon{align-items:center;border:1px solid rgba(255,255,255,.06);border-radius:6px;color:#e5e7eb;display:inline-flex;flex:0 0 auto;font-size:11px;font-weight:800;height:24px;justify-content:center;width:28px}.sidebar-status{align-items:center;border-top:1px solid rgba(255,255,255,.08);color:#9ca3af;display:flex;font-size:12px;gap:8px;margin-top:auto;padding:14px 8px 2px}.status-dot{background:#22c55e;border-radius:999px;box-shadow:0 0 0 4px rgba(34,197,94,.14);height:8px;width:8px}.workspace{min-width:0}.topbar{align-items:center;background:rgba(255,255,255,.82);border-bottom:1px solid var(--line);display:flex;justify-content:space-between;min-height:72px;padding:14px 30px;position:-webkit-sticky;position:sticky;top:0;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:2}.topbar p{color:var(--muted);font-size:13px;margin:3px 0 0}.eyebrow{color:var(--primary);font-size:12px;font-weight:800;letter-spacing:0;text-transform:none}.main{padding:30px}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:20px}.page-title{font-size:28px;letter-spacing:0;line-height:1.2;margin:0}.page-description{color:var(--muted);margin:6px 0 0;max-width:760px}.grid{display:grid;grid-gap:16px;gap:16px}.grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.card{box-shadow:var(--shadow-soft);padding:18px}.card,.panel{background:var(--surface);border:1px solid var(--line);border-radius:8px}.panel{box-shadow:var(--shadow);overflow:hidden}.panel-header{align-items:center;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;padding:15px 18px}.panel-title{font-size:15px;font-weight:800;margin:0}.panel-subtitle{color:var(--muted);font-size:13px;margin:3px 0 0}.metric{display:grid;grid-gap:4px;gap:4px;min-height:104px}.metric span{color:var(--muted);font-size:13px}.metric strong{font-size:30px;letter-spacing:0}.table{border-collapse:collapse;width:100%}.table td,.table th{border-bottom:1px solid var(--line);font-size:14px;padding:13px 16px;text-align:left;vertical-align:middle}.table th{background:#f8fafc;color:#516070;font-size:12px;font-weight:700;letter-spacing:0}.table tr:last-child td{border-bottom:0}.table a{color:var(--primary);font-weight:800}.table a:hover{text-decoration:underline}.stack{display:grid;grid-gap:4px;gap:4px}.muted{color:var(--muted)}.small-text{font-size:12px}.identity{align-items:center;display:flex;gap:10px}.avatar{background:#e8f5f7;border:1px solid #cce7ed;border-radius:8px;color:var(--primary-dark);font-weight:800;height:36px;justify-content:center;width:36px}.avatar,.badge{align-items:center;display:inline-flex}.badge{border-radius:6px;font-size:12px;font-weight:700;min-height:24px;padding:2px 9px;white-space:nowrap}.badge.ok{background:#e5f4ed;color:var(--ok)}.badge.warn{background:#fff0d6;color:var(--warning)}.badge.danger{background:#ffe7e4;color:var(--danger)}.badge.neutral{background:var(--surface-muted);color:var(--muted)}.badge-dot{background:currentColor;border-radius:999px;height:6px;margin-right:6px;width:6px}.actions{display:flex;flex-wrap:wrap;gap:8px}.compact-card{align-items:center;display:flex;gap:16px;justify-content:space-between;margin-top:16px}.compact-card h2{font-size:17px;margin:0}.compact-card p{color:var(--muted);margin:4px 0 0}.button{align-items:center;background:var(--primary);border:0;border-radius:6px;color:#fff;display:inline-flex;font-weight:700;min-height:36px;padding:8px 12px}.button.small{font-size:13px;min-height:34px;padding:7px 11px}.button.secondary{background:var(--surface);border:1px solid var(--line);color:var(--text)}.toolbar{align-items:center;gap:10px;justify-content:space-between;margin-bottom:14px}.filters,.toolbar{display:flex;flex-wrap:wrap}.filters{gap:8px}.filter-chip{background:#fff;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:13px;font-weight:700;min-height:32px;padding:6px 11px}.empty{color:var(--muted);padding:24px 18px;text-align:center}.approval-card{background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);display:grid;grid-template-columns:minmax(220px,320px) minmax(0,1fr);overflow:hidden}.approval-media{background:#0f172a;min-height:320px}.approval-media img{display:block;height:100%;object-fit:cover;width:100%}.approval-media-empty{align-items:center;color:#cbd5e1;display:flex;font-weight:800;height:100%;justify-content:center}.approval-body{display:grid;grid-gap:16px;gap:16px;padding:20px}.approval-meta{align-items:flex-start;display:flex;gap:16px;justify-content:space-between}.approval-meta h2{font-size:20px;margin:0}.approval-meta p{color:var(--muted);margin:4px 0 0}.caption-box{background:#f8fafc;border:1px solid var(--line);border-radius:8px;padding:14px}.caption-box span,.review-facts dt{color:var(--muted);display:block;font-size:12px;font-weight:800;margin-bottom:6px}.caption-box p{margin:0;white-space:pre-wrap}.review-facts{display:grid;grid-gap:10px;gap:10px;margin:0}.review-facts div{border-bottom:1px solid var(--line);display:grid;grid-gap:6px;gap:6px;grid-template-columns:132px minmax(0,1fr);padding-bottom:10px}.review-facts dd{margin:0}.consent-body{padding:20px}.consent-body h3{margin:0 0 10px}.consent-list{color:var(--text);display:grid;grid-gap:8px;gap:8px;margin:0 0 18px;padding-left:20px}.alert{border-radius:8px;font-weight:700;margin-bottom:16px;padding:12px 14px}.alert.ok{background:#e5f4ed;color:var(--ok)}.alert.warn{background:#fff0d6;color:var(--warning)}.alert.danger{background:#ffe7e4;color:var(--danger)}.form-grid{display:grid;grid-gap:14px;gap:14px;grid-template-columns:repeat(2,minmax(0,1fr))}.inline-form{align-items:end;display:grid;grid-gap:12px;gap:12px;grid-template-columns:minmax(180px,1fr) minmax(180px,1fr) minmax(180px,1fr) auto;padding:18px}.inline-form label{display:grid;grid-gap:6px;gap:6px}.inline-form span{color:var(--muted);font-size:12px;font-weight:800}.inline-form input,.inline-form select{border:1px solid var(--line);border-radius:6px;min-height:38px;padding:8px 10px;width:100%}.field{display:grid;grid-gap:6px;gap:6px}.field>label{color:var(--muted);font-size:13px;font-weight:700}.check-row{align-items:center;display:flex;gap:8px;min-height:38px}.check-row input{height:16px;min-height:0;width:16px}.check-row span{color:var(--text);font-size:14px;font-weight:600}.field input,.field select,.field textarea{border:1px solid var(--line);border-radius:6px;min-height:38px;padding:8px 10px;width:100%}.mapping-panel{margin-top:16px}.mapping-body{display:grid;grid-gap:16px;gap:16px;padding:18px}.location-map-form{align-items:end;display:grid;grid-gap:12px;gap:12px;grid-template-columns:minmax(0,1fr) auto}.mapping-table code{color:var(--muted);font-size:12px;overflow-wrap:anywhere}@media (max-width:900px){.shell{grid-template-columns:1fr}.sidebar{height:auto;position:static}.nav{grid-template-columns:repeat(2,minmax(0,1fr))}.topbar{align-items:flex-start;flex-direction:column;padding:14px 18px}.main{padding:18px}.form-grid,.grid.cols-2,.grid.cols-4,.inline-form,.location-map-form{grid-template-columns:1fr}.page-header{align-items:flex-start;flex-direction:column}.approval-card{grid-template-columns:1fr}.approval-media{min-height:260px}}