:root{--ff-color-primary:#ff2d55;--ff-color-primary-deep:#e11d48;--ff-color-primary-soft:#ffe8ee;--ff-color-primary-faint:#fff5f7;--ff-color-ink:#0b0b0f;--ff-color-ink-secondary:#5c5c66;--ff-color-ink-tertiary:#9494a1;--ff-color-paper:#fff;--ff-color-surface:#fafafc;--ff-color-border:#ececf1;--ff-color-border-strong:#d9d9e3;--ff-color-success:#1fa971;--ff-color-warning:#e8a13c;--ff-color-danger:#d92d20;--ff-color-info:#3b6fe0;--ff-color-dark-paper:#0e0e12;--ff-color-dark-surface:#1a1a21;--ff-color-dark-border:#2a2a33;--ff-color-dark-ink:#f5f5f7;--ff-color-dark-ink-secondary:#a8a8b3;--ff-font-display:"Inter Tight", "SF Pro Display", system-ui, -apple-system, sans-serif;--ff-font-body:"Inter", "SF Pro Text", system-ui, -apple-system, sans-serif;--ff-font-mono:"SF Mono", ui-monospace, Menlo, monospace;--ff-text-hero:56px;--ff-text-display:40px;--ff-text-title1:32px;--ff-text-title2:26px;--ff-text-title3:21px;--ff-text-headline:17px;--ff-text-body:17px;--ff-text-callout:16px;--ff-text-subhead:15px;--ff-text-footnote:13px;--ff-text-caption:12px;--ff-weight-regular:400;--ff-weight-medium:500;--ff-weight-semibold:600;--ff-weight-bold:700;--ff-weight-heavy:800;--ff-leading-tight:1.1;--ff-leading-snug:1.25;--ff-leading-normal:1.5;--ff-leading-relaxed:1.65;--ff-space-xs:4px;--ff-space-sm:8px;--ff-space-md:12px;--ff-space-lg:16px;--ff-space-xl:24px;--ff-space-xxl:32px;--ff-space-xxxl:48px;--ff-space-huge:64px;--ff-space-section:96px;--ff-radius-sm:8px;--ff-radius-md:12px;--ff-radius-lg:16px;--ff-radius-xl:24px;--ff-radius-pill:999px;--ff-radius-photo:20px;--ff-shadow-card:0 1px 2px #0b0b0f0a, 0 4px 16px #0b0b0f0f;--ff-shadow-raised:0 2px 4px #0b0b0f0f, 0 12px 32px #0b0b0f1a;--ff-shadow-glow-primary:0 8px 32px #ff2d5547;--ff-motion-easing:cubic-bezier(.32, .72, 0, 1);--ff-motion-instant:.1s;--ff-motion-fast:.18s;--ff-motion-normal:.26s;--ff-motion-slow:.42s;--ff-motion-drift:9s}
*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--ff-color-paper);color:var(--ff-color-ink);font-family:var(--ff-font-body);font-size:14px;line-height:var(--ff-leading-normal);-webkit-font-smoothing:antialiased}a{color:var(--ff-color-primary-deep);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--ff-color-primary);outline-offset:2px;border-radius:4px}h1,h2,h3{font-family:var(--ff-font-display);line-height:var(--ff-leading-tight);margin:0}code{font-family:var(--ff-font-mono);background:var(--ff-color-surface);border:1px solid var(--ff-color-border);border-radius:6px;padding:1px 5px;font-size:12px}.topnav{z-index:20;align-items:center;gap:var(--ff-space-xl);padding:0 var(--ff-space-xl);background:var(--ff-color-paper);border-bottom:1px solid var(--ff-color-border);height:56px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:var(--ff-space-sm);font-family:var(--ff-font-display);font-weight:var(--ff-weight-bold);color:var(--ff-color-ink);white-space:nowrap;font-size:16px;display:flex}.brand:hover{text-decoration:none}.brand img{border-radius:7px;width:26px;height:26px;display:block}.brand .hq{color:var(--ff-color-primary)}.topnav nav{align-items:center;gap:var(--ff-space-xs);flex:1;display:flex}.nav-link{border-radius:var(--ff-radius-pill);color:var(--ff-color-ink-secondary);font-weight:var(--ff-weight-medium);padding:6px 12px;font-size:13.5px}.nav-link:hover{color:var(--ff-color-ink);background:var(--ff-color-surface);text-decoration:none}.nav-link[aria-current=page]{background:var(--ff-color-primary-soft);color:var(--ff-color-primary-deep)}.whoami{align-items:center;gap:var(--ff-space-md);font-size:13px;display:flex}.whoami .admin-name{font-weight:var(--ff-weight-semibold)}.role-badge{text-transform:capitalize;font-size:11.5px;font-weight:var(--ff-weight-semibold);color:var(--ff-color-ink-secondary);background:var(--ff-color-surface);border:1px solid var(--ff-color-border);border-radius:var(--ff-radius-pill);padding:2px 10px}.page{max-width:1320px;padding:var(--ff-space-xl) var(--ff-space-xl) var(--ff-space-huge);margin:0 auto}.page-header{justify-content:space-between;align-items:baseline;gap:var(--ff-space-lg);margin-bottom:var(--ff-space-lg);flex-wrap:wrap;display:flex}.page-header h1{font-size:var(--ff-text-title2);font-weight:var(--ff-weight-heavy);letter-spacing:-.01em}.page-header .subtitle{color:var(--ff-color-ink-secondary);margin:4px 0 0;font-size:13.5px}.card{background:var(--ff-color-paper);border:1px solid var(--ff-color-border);border-radius:var(--ff-radius-lg);padding:var(--ff-space-lg) var(--ff-space-xl);box-shadow:var(--ff-shadow-card)}.card+.card{margin-top:var(--ff-space-lg)}.card>h2{font-size:15px;font-weight:var(--ff-weight-bold);margin-bottom:var(--ff-space-md)}.stack{gap:var(--ff-space-lg);display:grid}.two-col{gap:var(--ff-space-lg);grid-template-columns:minmax(0,2fr) minmax(0,1fr);align-items:start;display:grid}@media (max-width:980px){.two-col{grid-template-columns:minmax(0,1fr)}}.table-wrap{border:1px solid var(--ff-color-border);border-radius:var(--ff-radius-lg);background:var(--ff-color-paper);box-shadow:var(--ff-shadow-card);overflow-x:auto}.data-table{border-collapse:collapse;width:100%;font-size:13.5px}.data-table th{text-align:left;font-size:11.5px;font-weight:var(--ff-weight-semibold);text-transform:uppercase;letter-spacing:.05em;color:var(--ff-color-ink-tertiary);border-bottom:1px solid var(--ff-color-border);background:var(--ff-color-surface);white-space:nowrap;padding:10px 12px}.data-table td{border-bottom:1px solid var(--ff-color-border);vertical-align:middle;padding:9px 12px}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr:hover{background:var(--ff-color-primary-faint)}.row-link{cursor:pointer}.cell-strong{font-weight:var(--ff-weight-semibold)}.cell-muted{color:var(--ff-color-ink-secondary)}.cell-nowrap{white-space:nowrap}.badge{font-size:11.5px;font-weight:var(--ff-weight-semibold);border-radius:var(--ff-radius-pill);white-space:nowrap;text-transform:capitalize;padding:2px 10px;display:inline-block}.badge-success{color:#0d7a52;background:#e6f7ef}.badge-info{color:#2b55b5;background:#e9effc}.badge-warning{color:#97620f;background:#fdf1de}.badge-danger{color:#ab1f15;background:#fde9e7}.badge-neutral{background:var(--ff-color-surface);color:var(--ff-color-ink-secondary);border:1px solid var(--ff-color-border)}.notice{border-radius:var(--ff-radius-md);padding:var(--ff-space-md) var(--ff-space-lg);font-size:13.5px}.notice-error{color:#8f1a11;background:#fde9e7;border:1px solid #f6c8c3}.notice-success{color:#0d6a48;background:#e6f7ef;border:1px solid #bfe8d6}.warning-list{gap:var(--ff-space-sm);margin:0;padding:0;list-style:none;display:grid}.warning-list li{color:#8f1a11;border-radius:var(--ff-radius-md);font-size:13px;font-weight:var(--ff-weight-medium);background:#fde9e7;border:1px solid #f6c8c3;padding:8px 12px}.empty-state{border:1px dashed var(--ff-color-border-strong);border-radius:var(--ff-radius-lg);padding:var(--ff-space-xxl);text-align:center;color:var(--ff-color-ink-secondary);font-size:14px}.empty-inline{color:var(--ff-color-ink-tertiary);margin:0;font-size:13px}.btn{font-family:var(--ff-font-body);font-size:13.5px;font-weight:var(--ff-weight-semibold);border-radius:var(--ff-radius-pill);border:1px solid var(--ff-color-border-strong);background:var(--ff-color-paper);color:var(--ff-color-ink);cursor:pointer;transition:background var(--ff-motion-fast) var(--ff-motion-easing);justify-content:center;align-items:center;gap:6px;padding:7px 16px;display:inline-flex}.btn:hover{background:var(--ff-color-surface)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--ff-color-primary);border-color:var(--ff-color-primary);color:#fff}.btn-primary:hover{background:var(--ff-color-primary-deep);border-color:var(--ff-color-primary-deep)}.btn-danger{background:var(--ff-color-paper);color:var(--ff-color-danger);border-color:#f0b6b0}.btn-danger:hover{background:#fdf2f1}.btn-ghost{color:var(--ff-color-ink-secondary);background:0 0;border-color:#0000}.btn-ghost:hover{background:var(--ff-color-surface);color:var(--ff-color-ink)}.btn-sm{padding:4px 12px;font-size:12.5px}label{font-size:12px;font-weight:var(--ff-weight-semibold);color:var(--ff-color-ink-secondary);margin-bottom:3px;display:block}.input,.select,textarea.input{width:100%;font-family:var(--ff-font-body);color:var(--ff-color-ink);background:var(--ff-color-paper);border:1px solid var(--ff-color-border-strong);border-radius:var(--ff-radius-sm);padding:7px 10px;font-size:13.5px}.input:focus,.select:focus,textarea.input:focus{outline:2px solid var(--ff-color-primary);outline-offset:0;border-color:var(--ff-color-primary)}textarea.input{resize:vertical;min-height:64px}.form-error{color:var(--ff-color-danger);font-size:13px;font-weight:var(--ff-weight-medium);margin:var(--ff-space-sm) 0 0}.form-success{color:var(--ff-color-success);font-size:13px;font-weight:var(--ff-weight-medium);margin:var(--ff-space-sm) 0 0}form[aria-busy=true]{opacity:.65;pointer-events:none}.filters{gap:var(--ff-space-md);background:var(--ff-color-surface);border:1px solid var(--ff-color-border);border-radius:var(--ff-radius-lg);padding:var(--ff-space-md) var(--ff-space-lg);margin-bottom:var(--ff-space-lg);flex-wrap:wrap;align-items:end;display:flex}.filters .filter-field{flex:0 auto;min-width:120px}.filters .filter-field-wide{min-width:200px}.inline-form{gap:var(--ff-space-sm);flex-wrap:wrap;align-items:end;display:flex}.inline-form .grow{flex:1;min-width:180px}.avatar{object-fit:cover;vertical-align:middle;background:var(--ff-color-surface);border-radius:50%;display:inline-flex}.avatar-fallback{background:var(--ff-color-primary-soft);color:var(--ff-color-primary-deep);font-weight:var(--ff-weight-bold);justify-content:center;align-items:center}.photo-grid{gap:var(--ff-space-sm);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.photo-thumb{border:1px solid var(--ff-color-border);border-radius:var(--ff-radius-md);cursor:zoom-in;background:var(--ff-color-surface);padding:0;display:block;position:relative;overflow:hidden}.photo-grid-md .photo-thumb img{width:108px;height:138px}.photo-grid-sm .photo-thumb img{width:76px;height:96px}.photo-thumb img{object-fit:cover;display:block}.photo-primary-flag{font-size:10px;font-weight:var(--ff-weight-bold);color:#fff;border-radius:var(--ff-radius-pill);background:#0b0b0fb8;padding:1px 7px;position:absolute;bottom:6px;left:6px}.lightbox{border-radius:var(--ff-radius-lg);padding:var(--ff-space-md);background:var(--ff-color-paper);box-shadow:var(--ff-shadow-raised);border:none;max-width:min(88vw,720px)}.lightbox::backdrop{background:#0b0b0f8c}.lightbox img{border-radius:var(--ff-radius-md);max-width:100%;max-height:76vh;margin:0 auto;display:block}.lightbox form{margin-top:var(--ff-space-sm);text-align:right}.field-grid{gap:var(--ff-space-md) var(--ff-space-xl);grid-template-columns:repeat(auto-fill,minmax(180px,1fr));margin:0;display:grid}.field dt{font-size:11px;font-weight:var(--ff-weight-semibold);text-transform:uppercase;letter-spacing:.05em;color:var(--ff-color-ink-tertiary)}.field dd{margin:2px 0 0;font-size:13.5px}.completeness{align-items:center;gap:8px;display:inline-flex}.completeness .meter{border-radius:var(--ff-radius-pill);background:var(--ff-color-border);width:64px;height:6px;overflow:hidden}.completeness .meter>span{background:var(--ff-color-primary);border-radius:var(--ff-radius-pill);height:100%;display:block}.interest-list{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.interest-chip{border:1px solid var(--ff-color-border);background:var(--ff-color-surface);border-radius:var(--ff-radius-pill);padding:3px 11px;font-size:12.5px}.interest-chip.shared{background:var(--ff-color-primary-soft);color:var(--ff-color-primary-deep);font-weight:var(--ff-weight-semibold);border-color:#ffc3d0}.history-item{border:1px solid var(--ff-color-border);border-radius:var(--ff-radius-md);padding:var(--ff-space-md) var(--ff-space-lg)}.history-item+.history-item{margin-top:var(--ff-space-md)}.history-head{align-items:center;gap:var(--ff-space-md);flex-wrap:wrap;display:flex}.history-meta{color:var(--ff-color-ink-secondary);font-size:12.5px}.feedback-quote{margin:var(--ff-space-sm) 0 0;border-left:3px solid var(--ff-color-primary-soft);padding:4px 0 4px 12px;font-size:13px}.feedback-quote .who{font-weight:var(--ff-weight-semibold)}.feedback-quote .comments{color:var(--ff-color-ink-secondary);margin-top:2px}.timeline{gap:var(--ff-space-sm);margin:0;padding:0;list-style:none;display:grid}.timeline li{gap:var(--ff-space-md);grid-template-columns:160px 1fr;align-items:baseline;font-size:13.5px;display:grid}.timeline .when{color:var(--ff-color-ink-secondary);white-space:nowrap;font-size:12.5px}.note{border-bottom:1px solid var(--ff-color-border);padding:var(--ff-space-sm) 0}.note:last-of-type{border-bottom:none}.note .note-meta{color:var(--ff-color-ink-tertiary);margin-bottom:2px;font-size:12px}.note p{white-space:pre-wrap;margin:0;font-size:13.5px}.compare-grid{gap:var(--ff-space-lg);grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;display:grid}@media (max-width:900px){.compare-grid{grid-template-columns:minmax(0,1fr)}}.compare-name{align-items:center;gap:var(--ff-space-md);margin-bottom:var(--ff-space-md);display:flex}.compare-name h2{font-size:var(--ff-text-title3);font-weight:var(--ff-weight-bold)}.compare-actions{margin-bottom:var(--ff-space-lg)}.match-dialog{border-radius:var(--ff-radius-lg);padding:var(--ff-space-xl);box-shadow:var(--ff-shadow-raised);border:none;width:92vw;max-width:440px}.match-dialog::backdrop{background:#0b0b0f8c}.match-dialog h2{font-size:var(--ff-text-title3);margin-bottom:var(--ff-space-sm)}.dialog-buttons{justify-content:flex-end;gap:var(--ff-space-sm);margin-top:var(--ff-space-lg);display:flex}.pagination{justify-content:space-between;align-items:center;gap:var(--ff-space-md);margin-top:var(--ff-space-lg);color:var(--ff-color-ink-secondary);font-size:13px;display:flex}.pagination .pages{gap:var(--ff-space-sm);display:flex}.login-viewport{background:var(--ff-color-primary-faint);min-height:100dvh;padding:var(--ff-space-xl);place-items:center;display:grid;position:relative;overflow:hidden}.login-card{z-index:2;background:var(--ff-color-paper);border:1px solid var(--ff-color-border);border-radius:var(--ff-radius-xl);width:100%;max-width:380px;box-shadow:var(--ff-shadow-raised);padding:var(--ff-space-xxl);position:relative}.login-brand{align-items:center;gap:var(--ff-space-md);margin-bottom:var(--ff-space-xl);display:flex}.login-brand img{border-radius:12px;width:44px;height:44px}.login-brand h1{font-size:var(--ff-text-title2);font-weight:var(--ff-weight-heavy);letter-spacing:-.01em}.login-brand p{color:var(--ff-color-ink-secondary);margin:2px 0 0;font-size:13px}.login-card form{gap:var(--ff-space-lg);display:grid}.falling-heart{color:var(--ff-color-primary);opacity:.18;animation:heart-fall var(--ff-motion-drift) linear infinite;pointer-events:none;position:absolute;top:-60px}@keyframes heart-fall{0%{transform:translateY(-10vh)rotate(-14deg)}to{transform:translateY(115vh)rotate(10deg)}}@media (prefers-reduced-motion:reduce){.falling-heart{animation:none;top:auto;bottom:10%}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.pill-row{gap:var(--ff-space-sm);margin-bottom:var(--ff-space-lg);flex-wrap:wrap;display:flex}.pill-link{font-size:12.5px;font-weight:var(--ff-weight-semibold);border:1px solid var(--ff-color-border-strong);border-radius:var(--ff-radius-pill);color:var(--ff-color-ink-secondary);padding:4px 14px}.pill-link:hover{background:var(--ff-color-surface);text-decoration:none}.pill-link[aria-current=true]{background:var(--ff-color-ink);border-color:var(--ff-color-ink);color:#fff}.report-card{gap:var(--ff-space-sm);display:grid}.report-card .report-head{align-items:center;gap:var(--ff-space-md);flex-wrap:wrap;display:flex}.report-details{white-space:pre-wrap;margin:0;font-size:13.5px}.resolution-box{background:var(--ff-color-surface);border-radius:var(--ff-radius-md);padding:var(--ff-space-sm) var(--ff-space-md);color:var(--ff-color-ink-secondary);font-size:13px}.mod-actions{gap:var(--ff-space-md);display:grid}.mod-actions form{gap:var(--ff-space-sm);flex-wrap:wrap;align-items:end;display:flex}.mod-actions .grow{flex:1;min-width:160px}.success-banner{justify-content:space-between;align-items:center;gap:var(--ff-space-md);flex-wrap:wrap;display:flex}
