:root{--ff-bg: #f7f7f8;--ff-panel: #ffffff;--ff-border: #d8d8dd;--ff-text: #1c1c1f;--ff-muted: #6b6b73;--ff-ok: #1a7f37;--ff-ok-bg: #e6f4ea;--ff-warn: #8a6100;--ff-warn-bg: #fdf3d8;--ff-bad: #a4262c;--ff-bad-bg: #fdeaea;--ff-hidden: #8a8a92}.ff-layout{display:grid;grid-template-columns:minmax(280px,1fr) minmax(360px,1.4fr);gap:1.5rem;align-items:start}@media (max-width: 860px){.ff-layout{grid-template-columns:1fr}}.ff-panel{background:var(--ff-panel);border:1px solid var(--ff-border);border-radius:8px;padding:1.25rem}.ff-panel h2{margin:0 0 .25rem;font-size:1.05rem}.ff-hint{margin:0 0 1rem;color:var(--ff-muted);font-size:.85rem}.ff-fields{display:flex;flex-direction:column;gap:.6rem}.ff-row{display:flex;flex-direction:column;gap:.2rem}.ff-row label{font-size:.8rem;color:var(--ff-muted)}.ff-input-group{display:flex;gap:.4rem}.ff-input-group input{flex:1;min-width:0;padding:.4rem .5rem;border:1px solid var(--ff-border);border-radius:4px;font:inherit;font-size:.9rem;color:var(--ff-text);background:#fff}.ff-input-group input:focus{outline:2px solid #4a6cf7;outline-offset:-1px}.ff-reveal{padding:0 .6rem;border:1px solid var(--ff-border);border-radius:4px;background:var(--ff-bg);font:inherit;font-size:.8rem;color:var(--ff-muted);cursor:pointer}.ff-reveal:hover{background:#ececf0}.ff-summary{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem;margin-bottom:1rem;font-size:.85rem;color:var(--ff-muted)}.ff-badge{padding:.15rem .5rem;border-radius:999px;font-weight:600;font-size:.8rem}.ff-badge-ok{background:var(--ff-ok-bg);color:var(--ff-ok)}.ff-badge-warn{background:var(--ff-warn-bg);color:var(--ff-warn)}.ff-count-missing{color:var(--ff-warn)}.ff-count-invalid{color:var(--ff-bad)}.ff-table{width:100%;border-collapse:collapse;font-size:.85rem}.ff-table th,.ff-table td{text-align:left;padding:.45rem .5rem;border-bottom:1px solid var(--ff-border);vertical-align:top}.ff-table thead th{font-size:.75rem;text-transform:uppercase;letter-spacing:.03em;color:var(--ff-muted);border-bottom-width:2px}.ff-label{display:block;font-weight:500;color:var(--ff-text)}.ff-field-id{display:block;font-size:.7rem;color:var(--ff-muted);font-weight:400}.ff-value{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82rem}.ff-empty{color:var(--ff-muted)}.ff-reason{margin-top:.15rem;font-size:.75rem;color:var(--ff-bad)}.ff-pill{display:inline-block;padding:.1rem .45rem;border-radius:999px;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.02em}.ff-pill-filled{background:var(--ff-ok-bg);color:var(--ff-ok)}.ff-pill-missing{background:var(--ff-warn-bg);color:var(--ff-warn)}.ff-pill-invalid{background:var(--ff-bad-bg);color:var(--ff-bad)}.ff-pill-hidden{background:var(--ff-bg);color:var(--ff-hidden)}.ff-status-hidden{opacity:.55}.shell{min-height:100vh;display:flex;flex-direction:column}.shell-header{display:flex;align-items:center;gap:2rem;padding:0 1.5rem;height:56px;background:#1c1c1f;color:#fff;position:sticky;top:0;z-index:10}.shell-brand{display:flex;align-items:baseline;gap:.6rem;min-width:0}.shell-logo{font-weight:700;font-size:1.05rem;letter-spacing:-.01em}.shell-firm{font-size:.8rem;color:#a8a8b0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.shell-nav{display:flex;gap:.25rem;flex:1}.shell-tab{padding:.4rem .75rem;border:none;border-radius:4px;background:transparent;color:#c8c8d0;font:inherit;font-size:.875rem;cursor:pointer}.shell-tab:hover{background:#2c2c31;color:#fff}.shell-tab-active{background:#3a3a42;color:#fff;font-weight:600}.shell-user{display:flex;flex-direction:column;align-items:flex-end;line-height:1.2}.shell-user-name{font-size:.85rem;font-weight:500}.shell-user-role{font-size:.7rem;color:#a8a8b0;text-transform:capitalize}.shell-main{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:1.5rem}.shell-footer{padding:.75rem 1.5rem;border-top:1px solid #d8d8dd;font-size:.75rem;color:#6b6b73;text-align:center}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:1.25rem}.page-title{margin:0;font-size:1.4rem;letter-spacing:-.01em}.page-subtitle{margin:.15rem 0 0;color:#6b6b73;font-size:.875rem}.page-actions{display:flex;gap:.5rem;flex-shrink:0}.card{background:#fff;border:1px solid #d8d8dd;border-radius:8px;padding:1.1rem 1.25rem;margin-bottom:1rem}.card-warn{border-color:#e8c98a;background:#fffdf6}.card-bad{border-color:#e0a8ab;background:snow}.card-title{margin:0 0 .75rem;font-size:.95rem;font-weight:600}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.75rem;margin-bottom:1rem}.stat{background:#fff;border:1px solid #d8d8dd;border-radius:8px;padding:.9rem 1rem}.stat-value{font-size:1.6rem;font-weight:600;line-height:1.1;letter-spacing:-.02em}.stat-label{margin-top:.15rem;font-size:.78rem;color:#6b6b73}.stat-warn .stat-value{color:#8a6100}.stat-bad .stat-value{color:#a4262c}.deadline{display:inline-block;padding:.1rem .45rem;border-radius:999px;font-size:.72rem;font-weight:600;white-space:nowrap}.deadline-overdue{background:#fdeaea;color:#a4262c}.deadline-soon{background:#fdf3d8;color:#8a6100}.deadline-ok{background:#eef1f5;color:#4a4a52}.deadline-closed{background:#f2f2f4;color:#8a8a92}.pill{display:inline-block;padding:.1rem .45rem;border-radius:999px;font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.02em;white-space:nowrap}.pill-ok{background:#e6f4ea;color:#1a7f37}.pill-warn{background:#fdf3d8;color:#8a6100}.pill-bad{background:#fdeaea;color:#a4262c}.pill-muted{background:#f2f2f4;color:#6b6b73}.empty-state{margin:0;padding:1rem 0;color:#6b6b73;font-size:.875rem}.data-table{width:100%;border-collapse:collapse;font-size:.875rem}.data-table th,.data-table td{text-align:left;padding:.55rem .6rem;border-bottom:1px solid #e6e6ea;vertical-align:top}.data-table thead th{font-size:.72rem;text-transform:uppercase;letter-spacing:.03em;color:#6b6b73;border-bottom-width:2px}.data-table tbody tr:hover{background:#fafafb}.row-link{padding:0;border:none;background:none;font:inherit;color:#1f4fd8;cursor:pointer;text-align:left}.row-link:hover{text-decoration:underline}.muted{color:#6b6b73}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82rem}.banner{display:flex;gap:.6rem;align-items:flex-start;padding:.7rem .9rem;border-radius:6px;font-size:.85rem;margin-bottom:1rem}.banner-warn{background:#fdf3d8;border:1px solid #e8c98a;color:#6b4b00}.banner-bad{background:#fdeaea;border:1px solid #e0a8ab;color:#8a1f24}.banner-info{background:#eef2fd;border:1px solid #b9c8f0;color:#1f3a8a}.detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.9rem 1.5rem}.detail-item dt{font-size:.72rem;text-transform:uppercase;letter-spacing:.03em;color:#6b6b73;margin-bottom:.1rem}.detail-item dd{margin:0;font-size:.9rem}.back-link{padding:0;border:none;background:none;font:inherit;font-size:.8rem;color:#6b6b73;cursor:pointer;margin-bottom:.5rem}.back-link:hover{color:#1c1c1f;text-decoration:underline}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:#f7f7f8;color:#1c1c1f;font-family:system-ui,-apple-system,Segoe UI,sans-serif;line-height:1.5}button{font-family:inherit}
