@import url("https://fonts.googleapis.com/css2?family=Inter:ital,wght@0,400;0,500;0,600;0,700;0,800;1,400&family=Playfair+Display:ital,wght@0,400;1,400;1,700&display=swap");:root{--tf-blue-anchor:#001e57;--tf-blue-bright:#006cd8;--tf-green-plus:#0f6637;--tf-tan:#f8f3e9;--tf-blue-cta:#003366;--tf-blue-link:#007bff;--tf-white:#ffffff;--tf-surface-tan:#f9f6f3;--tf-surface-gray:#f6f6f6;--tf-surface-alt:#f3f4f6;--tf-ink:#111111;--tf-body:#4a5568;--tf-muted:#6b7280;--tf-subtle:#838383;--tf-placeholder:#757575;--tf-border:#dbdbdb;--tf-border-cool:#e4e8ef;--tf-border-soft:#e8e8e8;--tf-plus-surface:#eff9f4;--tf-plus-border:#b3e0c7;--tf-amber:#b45309;--tf-amber-surface:#fdf6ec;--tf-amber-border:#f3d9a4;--tf-red:#c02626;--tf-red-surface:#fdecec;--tf-red-border:#f2c2c2;--surface-page:var(--tf-white);--surface-card:var(--tf-white);--surface-warm:var(--tf-surface-tan);--surface-field:var(--tf-surface-gray);--text-heading:var(--tf-blue-anchor);--text-body:var(--tf-body);--text-muted:var(--tf-muted);--border-default:var(--tf-border);--border-subtle:var(--tf-border-cool);--action-primary:var(--tf-blue-cta);--action-primary-hover:#002a54;--link:var(--tf-blue-bright);--font-sans:"Inter",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--font-accent:"Playfair Display",Georgia,"Times New Roman",serif;--font-mono:ui-monospace,SFMono-Regular,Menlo,monospace;--ls-caps:0.04em;--radius-xs:4px;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--radius-pill:20px;--shadow-card:0 2px 8px rgba(0,0,0,0.06);--shadow-header:0 4px 4px rgba(27,43,75,0.08);--shadow-pop:0 8px 24px rgba(0,30,87,0.12);--ease-standard:cubic-bezier(0.4,0,0.2,1);--dur-fast:120ms;--dur-base:180ms}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--surface-page);color:var(--text-body);font-family:var(--font-sans);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3{color:var(--text-heading)}.header{justify-content:space-between;padding:16px 28px;background:var(--surface-card);border-bottom:1px solid var(--border-subtle);box-shadow:var(--shadow-header)}.brand,.header{display:flex;align-items:center}.brand{gap:10px;font-weight:700;font-size:19px;color:var(--text-heading);letter-spacing:-.01em}.brand .logo{font-size:22px}.header-right{display:flex;align-items:center;gap:16px;color:var(--text-muted);font-size:13px}.container{max-width:960px;margin:0 auto;padding:32px 24px 64px}.center-screen{min-height:100vh;display:grid;place-items:center;padding:24px;background:var(--surface-warm)}.card{background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);padding:24px;margin-bottom:20px}.card h2{margin:0 0 4px;font-size:18px;font-weight:700;letter-spacing:-.01em}.card .hint{color:var(--text-muted);font-size:13px;margin:0 0 16px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:44px;padding:0 22px;background:var(--action-primary);color:var(--tf-white);border:1px solid transparent;border-radius:var(--radius-md);font-family:var(--font-sans);font-size:15px;font-weight:600;line-height:1;cursor:pointer;white-space:nowrap;transition:background var(--dur-base) var(--ease-standard),transform var(--dur-fast) var(--ease-standard)}.btn:hover:not(:disabled){background:var(--action-primary-hover);transform:translateY(-1px)}.btn:disabled{background:#c9ced8;cursor:not-allowed}.btn.secondary{background:transparent;color:var(--action-primary);border-color:var(--action-primary)}.btn.secondary:hover:not(:disabled){background:rgba(0,51,102,.06)}.btn.ghost{background:transparent;color:var(--text-heading);border-color:var(--border-default)}.btn.ghost:hover:not(:disabled){background:rgba(0,30,87,.06)}.btn.danger{background:var(--tf-red)}.btn.danger:hover:not(:disabled){background:#a31f1f}.dropzone{border:2px dashed var(--border-default);border-radius:var(--radius-lg);padding:48px 24px;text-align:center;color:var(--text-muted);background:var(--surface-field);cursor:pointer;transition:border-color var(--dur-base) var(--ease-standard),background var(--dur-base) var(--ease-standard)}.dropzone.drag{border-color:var(--tf-blue-bright);background:rgba(0,108,216,.06)}.dropzone strong{color:var(--text-heading)}label{display:block;font-size:13px;font-weight:500;color:var(--text-body);margin-bottom:6px}input[type=email],input[type=text],select{width:100%;padding:10px 12px;background:var(--tf-white);border:1px solid var(--border-default);border-radius:var(--radius-md);color:var(--tf-ink);font-size:14px;font-family:var(--font-sans)}input[type=email]:focus,input[type=text]:focus,select:focus{outline:none;border-color:var(--tf-blue-bright);box-shadow:0 0 0 3px rgba(0,108,216,.15)}input::placeholder{color:var(--tf-placeholder)}.row{display:flex;gap:16px;flex-wrap:wrap}.row>*{flex:1 1;min-width:200px}.table-wrap{overflow-x:auto;border:1px solid var(--border-default);border-radius:var(--radius-md)}table{border-collapse:collapse;width:100%;font-size:13px}td,th{text-align:left;padding:9px 12px;border-bottom:1px solid var(--border-subtle);white-space:nowrap}th{background:var(--surface-field);color:var(--text-muted);font-weight:600;position:-webkit-sticky;position:sticky;top:0}td{color:var(--text-body)}td.null{color:var(--text-subtle);font-style:italic}tbody tr:last-child td{border-bottom:none}.badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:var(--radius-xs);font-size:12px;font-weight:600}.badge.add{background:var(--tf-plus-surface);color:var(--tf-green-plus)}.badge.null{background:var(--tf-amber-surface);color:var(--tf-amber)}.badge.warn{background:var(--tf-red-surface);color:var(--tf-red)}.badge.role{background:var(--surface-field);color:var(--text-body);border:1px solid var(--border-default)}.pill-list{display:flex;flex-wrap:wrap;gap:6px}.pill{background:var(--surface-field);border:1px solid var(--border-default);border-radius:var(--radius-sm);padding:3px 9px;font-size:12px;font-family:var(--font-mono);color:var(--tf-ink)}.alert{padding:12px 16px;border-radius:var(--radius-md);margin-bottom:16px;font-size:14px;border:1px solid transparent;border-left-width:3px}.alert.error{background:var(--tf-red-surface);border-color:var(--tf-red-border);border-left-color:var(--tf-red);color:#7f1d1d}.alert.success{background:var(--tf-plus-surface);border-color:var(--tf-plus-border);border-left-color:var(--tf-green-plus);color:#0b4e2a}.alert.warn{background:var(--tf-amber-surface);border-color:var(--tf-amber-border);border-left-color:var(--tf-amber);color:#7c4a06}.modal-overlay{position:fixed;inset:0;background:rgba(0,30,87,.45);display:grid;place-items:center;padding:24px;z-index:50}.modal{background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-lg);box-shadow:var(--shadow-pop);max-width:640px;width:100%;max-height:85vh;overflow-y:auto;padding:24px}.signin-page{min-height:100vh;display:flex;flex-direction:column;background:var(--surface-warm)}.signin-main{flex:1 1;display:grid;place-items:center;padding:48px 24px}.signin-card{background:var(--surface-card);border:1px solid var(--border-default);border-radius:var(--radius-lg);box-shadow:var(--shadow-pop);padding:44px 40px;width:100%;max-width:400px;text-align:center}.signin-badge{width:76px;height:76px;margin:0 auto 22px;border-radius:999px;background:var(--tf-plus-surface);border:1px solid var(--tf-plus-border);display:grid;place-items:center;font-size:40px;line-height:1;box-shadow:inset 0 0 0 6px rgba(15,102,55,.05)}.signin-title{font-size:27px;font-weight:700;letter-spacing:-.02em;color:var(--text-heading);margin:0 0 6px}.signin-sub{color:var(--text-muted);font-size:14px;margin:0 0 26px}.signin-card .btn{width:100%;justify-content:center;height:48px;font-size:15px}.signin-note{margin:16px 0 0;font-size:12.5px;color:var(--text-subtle)}.signin-footer{border-top:1px solid var(--border-subtle);background:var(--surface-card);padding:18px 24px;text-align:center}.signin-footer .fl-main{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600;color:var(--text-heading);text-transform:uppercase;letter-spacing:var(--ls-caps)}.signin-footer .fl-main svg,.signin-footer .fl-sub{color:var(--text-muted)}.signin-footer .fl-sub{margin:5px 0 0;font-size:11.5px}.muted{color:var(--text-muted)}.mono{font-family:var(--font-mono);font-size:13px;color:var(--tf-ink)}.accent{font-family:var(--font-accent);font-style:italic}.stack>*+*{margin-top:16px}.spinner{display:inline-block;width:14px;height:14px;border:2px solid rgba(0,30,87,.2);border-top:2px solid var(--action-primary);border-radius:50%;animation:spin .7s linear infinite;vertical-align:middle}.btn .spinner{border-color:#fff rgba(255,255,255,.5) rgba(255,255,255,.5)}.btn.ghost .spinner,.btn.secondary .spinner{border-color:rgba(0,51,102,.3);border-top-color:var(--action-primary)}@keyframes spin{to{transform:rotate(1turn)}}