:root{--bg: #eef2f7;--surface: #ffffff;--surface-subtle: #f7f9fc;--border: #dbe3ee;--border-strong: #c3cfe0;--text: #16202e;--text-muted: #63708a;--ink: #16202e;--accent: #2f6ab5;--accent-bg: #e8f0fb;--accent-border: #a9c4e6;--danger: #b0453e;--success: #3f7a4f;--warning-bg: #fff6e0;--warning-border: #f0d79a;--warning-text: #6b4a00;--sidebar-bg: #1b2a41;--sidebar-text: #aebbd0;--sidebar-text-strong: #ffffff;--sidebar-hover: #253753;--sidebar-active: #2f6ab5;--sidebar-border: #24344d;--portal-bg: #f2f5fa;--radius: 8px;--radius-sm: 5px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Inter,Segoe UI,sans-serif;font-size:14px}a{color:var(--accent);text-decoration:none}button{font-family:inherit}.app-shell{display:flex;min-height:100vh}.sidebar{width:216px;flex:none;background:var(--sidebar-bg);color:var(--sidebar-text);border-right:1px solid var(--sidebar-border);display:flex;flex-direction:column;padding:16px 12px;gap:2px;position:sticky;top:0;height:100vh}.sidebar-brand{font-weight:700;font-size:16px;padding:4px 10px 16px;color:var(--sidebar-text-strong)}.nav-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:var(--radius-sm);color:var(--sidebar-text);font-weight:500}.nav-item:hover{background:var(--sidebar-hover);color:var(--sidebar-text-strong)}.nav-item.active{background:var(--sidebar-active);color:var(--sidebar-text-strong)}.sidebar-spacer{flex:1}.sidebar-user{display:flex;align-items:center;gap:8px;padding:8px 10px;font-size:12px;color:var(--sidebar-text)}.main{flex:1;min-width:0;display:flex;flex-direction:column}.page-header{display:flex;justify-content:space-between;align-items:center;padding:18px 28px 14px;border-bottom:1px solid var(--border);background:var(--surface);gap:16px;flex-wrap:wrap}.page-title{font-size:18px;font-weight:700}.page-subtitle{font-size:12px;color:var(--text-muted);margin-top:2px}.page-actions{display:flex;gap:8px;align-items:center}.page-body{padding:20px 28px 32px;flex:1;min-height:0}.tabs{display:flex;gap:4px;padding:0 28px;border-bottom:1px solid var(--border);background:var(--surface)}.tab{padding:10px 14px;color:var(--text-muted);font-weight:600;border-bottom:2px solid transparent;cursor:pointer;background:none;border-top:none;border-left:none;border-right:none;font-size:13px}.tab.active{color:var(--text);border-bottom-color:var(--ink)}.tab .count{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:99px;background:var(--accent-bg);color:var(--accent);font-size:11px;font-weight:700}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.btn{border:1px solid var(--border-strong);background:var(--surface);border-radius:var(--radius-sm);padding:6px 12px;font-size:13px;font-weight:600;cursor:pointer;color:var(--text);display:inline-flex;align-items:center;gap:6px}.btn:hover{background:var(--bg)}.btn.primary{background:var(--ink);border-color:var(--ink);color:#fff}.btn.primary:hover{opacity:.9}.btn.danger{color:var(--danger);border-color:var(--danger)}.btn:disabled{opacity:.5;cursor:not-allowed}.chip{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--border-strong);border-radius:99px;padding:2px 9px;font-size:11px;color:var(--text-muted)}.badge-ai{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--accent-border);background:var(--accent-bg);color:var(--accent);border-radius:4px;padding:2px 7px;font-size:11px;font-weight:600}.avatar{width:30px;height:30px;border-radius:50%;background:#e6e2db;border:1px solid var(--border-strong);flex:none}.section-label{font-size:11px;color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase;font-weight:700}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px}.stat-card{padding:12px 14px}.stat-value{font-size:22px;font-weight:700;margin-top:4px}table.data-table{width:100%;border-collapse:collapse}table.data-table th{text-align:left;font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em;padding:9px 14px;border-bottom:1px solid var(--border);background:var(--bg)}table.data-table td{padding:10px 14px;border-bottom:1px dashed var(--border);font-size:13px}table.data-table tr:last-child td{border-bottom:none}table.data-table tbody tr:hover{background:var(--bg);cursor:pointer}.empty-state{padding:40px 20px;text-align:center;color:var(--text-muted);font-size:13px}.split-layout{display:grid;grid-template-columns:260px 1fr;gap:0;height:100%;min-height:0}.rail{border-right:1px solid var(--border);background:var(--surface);overflow-y:auto}.rail-item{padding:11px 14px;border-bottom:1px dashed var(--border);cursor:pointer}.rail-item:hover{background:var(--bg)}.rail-item.active{background:var(--accent-bg);border-left:3px solid var(--accent)}.rail-item-title{font-weight:700}.rail-item-sub{font-size:12px;color:var(--text-muted);margin-top:2px}.board{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(200px,1fr);gap:10px;overflow-x:auto;padding-bottom:8px;align-items:start}.board-column{display:flex;flex-direction:column;gap:8px;min-width:200px;min-height:140px;border-radius:6px;padding:4px;margin:-4px;transition:background-color .12s ease,box-shadow .12s ease}.board-column.drop-target{background:var(--accent-bg, rgba(59, 130, 246, .08));box-shadow:inset 0 0 0 2px var(--accent-border, rgba(59, 130, 246, .5))}.board-card[draggable=true]{cursor:grab}.board-card.dragging{opacity:.4}.board-notice{font-size:12px;padding:8px 10px;border-radius:6px;margin-bottom:10px;border:1px solid var(--border);display:flex;justify-content:space-between;gap:12px;align-items:center}.board-notice.warn{border-color:#f0b429;background:#fff8e6}.board-notice.error{border-color:#e5484d;background:#fff1f1}.board-column-header{display:flex;justify-content:space-between;font-size:12px;color:var(--text-muted);text-transform:uppercase;font-weight:700;letter-spacing:.03em}.board-card{padding:9px 10px;display:flex;flex-direction:column;gap:6px;font-size:12px}.queue-item{display:flex;gap:12px;padding:12px}.progress-track{height:7px;border-radius:4px;background:var(--border);overflow:hidden}.progress-fill{height:100%;background:var(--ink)}.loading,.error-state{padding:24px;color:var(--text-muted);font-size:13px}.error-state{color:var(--danger)}.warning-note{color:var(--warning-text);background:var(--warning-bg);border:1px solid var(--warning-border);border-radius:8px;padding:8px 10px}.timeline{display:flex;flex-direction:column;gap:12px}.timeline-entry{display:flex;gap:10px}.timeline-entry .ts{width:78px;flex:none;font-size:11px;color:var(--text-muted);padding-top:2px}.form-row{display:flex;flex-direction:column;gap:5px;margin-bottom:12px}.form-row label{font-size:12px;font-weight:600;color:var(--text-muted)}.form-row input,.form-row select,.form-row textarea{padding:7px 9px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);font-size:13px;font-family:inherit}.rte{border:1px solid var(--border-strong);border-radius:6px;background:#fff;overflow:hidden}.rte-toolbar{display:flex;gap:2px;align-items:center;padding:4px 6px;border-bottom:1px solid var(--border);background:var(--bg-subtle, #f7f7f8)}.rte-toolbar button{border:1px solid transparent;background:transparent;border-radius:4px;padding:3px 8px;font-size:12px;cursor:pointer;color:inherit;min-width:28px}.rte-toolbar button:hover{background:#fff;border-color:var(--border)}.rte-sep{width:1px;height:18px;background:var(--border);margin:0 4px}.rte-linkbar{display:flex;gap:6px;padding:6px;border-bottom:1px solid var(--border);background:#fffbe6}.rte-linkbar input{flex:1;padding:5px 7px}.rte-body{padding:12px 14px;font-family:Arial,Helvetica,sans-serif;font-size:13px;line-height:1.45;color:#202124;outline:none;white-space:pre-wrap;word-wrap:break-word}.rte-body a{color:#1a0dab;text-decoration:underline}.rte-body ul,.rte-body ol{margin:4px 0;padding-left:24px}.rte-body:empty:before,.rte-body[data-placeholder]:not([data-placeholder=""]):before{content:attr(data-placeholder);color:#9aa0a6;pointer-events:none}.rte-body.preview{border:1px solid var(--border);border-radius:6px;background:#fff;color:#5f6368}.signature-preview{margin:4px 0 8px;padding:10px 12px;border-left:3px solid var(--border-strong);background:var(--bg-subtle, #f7f7f8);border-radius:0 6px 6px 0}.placeholder-chip{cursor:grab;-webkit-user-select:none;user-select:none;font-family:ui-monospace,monospace;font-size:11px}.placeholder-chip:active{cursor:grabbing}.placeholder-chip.custom{border-color:var(--accent-border, #7aa2f7);background:var(--accent-bg, #eef3ff)}.placeholder-chip.copied{background:#d9f7e5;border-color:#3cb371}.mobile-nav,.mobile-sheet,.mobile-sheet-backdrop{display:none}@media (max-width: 899px){.sidebar{display:none}.app-shell{flex-direction:column}.main{padding-bottom:calc(60px + env(safe-area-inset-bottom,0px))}.mobile-nav{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:40;background:var(--sidebar-bg);border-top:1px solid var(--sidebar-border);padding-bottom:env(safe-area-inset-bottom,0px)}.mobile-nav-item{flex:1;min-height:44px;display:flex;align-items:center;justify-content:center;padding:10px 4px;font:inherit;font-size:11px;font-weight:600;text-align:center;color:var(--sidebar-text);background:none;border:none;cursor:pointer}.mobile-nav-item.active{color:var(--sidebar-text-strong);box-shadow:inset 0 2px 0 var(--sidebar-active)}.mobile-sheet-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#0c121c66;z-index:41}.mobile-sheet{display:flex;flex-direction:column;position:fixed;left:0;right:0;bottom:calc(60px + env(safe-area-inset-bottom,0px));z-index:42;background:var(--surface);border-top:1px solid var(--border);border-radius:12px 12px 0 0;padding:8px 8px 12px;box-shadow:0 -8px 24px #00000024;max-height:70vh;overflow-y:auto}.mobile-sheet-user{display:flex;align-items:center;gap:8px;padding:10px 12px;font-size:12px;color:var(--text-muted);border-bottom:1px solid var(--border);margin-bottom:4px}.mobile-sheet-item{padding:12px;border-radius:var(--radius-sm);color:var(--text);font-weight:500}.mobile-sheet-item.active{background:var(--accent-bg);color:var(--accent)}.page-header{padding:14px 16px 12px}.page-body{padding:14px 16px 24px}.tabs{padding:0 16px;overflow-x:auto}.stat-grid{grid-template-columns:repeat(2,1fr);gap:8px}.stat-card{padding:10px}.board,.table-wrap,.data-table{overflow-x:auto}.split-layout{grid-template-columns:1fr;height:auto}.rail{border-right:none;border-bottom:1px solid var(--border);max-height:34vh}.detail-split,.form-grid-2{grid-template-columns:1fr!important}}.segmented{display:inline-flex;border:1px solid var(--border-strong);border-radius:var(--radius-sm);overflow:hidden;background:var(--surface)}.segment{font:inherit;font-size:12px;padding:6px 12px;border:none;background:none;color:var(--text-muted);cursor:pointer}.segment+.segment{border-left:1px solid var(--border)}.segment.active{background:var(--ink);color:#fff}.sheet-toolbar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}.sheet-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);max-height:68vh;overflow-y:auto}.sheet{border-collapse:collapse;width:100%;font-size:13px}.sheet thead th{position:sticky;top:0;z-index:1;background:var(--surface-subtle);border-bottom:1px solid var(--border-strong);text-align:left;font-size:11px;letter-spacing:.03em;text-transform:uppercase;color:var(--text-muted);padding:9px 12px;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none}.sheet thead th:hover{color:var(--text)}.sheet td{padding:9px 12px;border-bottom:1px solid var(--border);white-space:nowrap;max-width:260px;overflow:hidden;text-overflow:ellipsis}.sheet tbody tr:hover td{background:var(--accent-bg)}.sheet .num{text-align:right;font-variant-numeric:tabular-nums}.stage-chips{display:flex;gap:7px;overflow-x:auto;padding-bottom:10px}.stage-chip{flex:none;font:inherit;font-size:12px;padding:7px 13px;border-radius:99px;border:1px solid var(--border-strong);background:var(--surface);color:var(--text-muted);cursor:pointer;white-space:nowrap}.stage-chip.active{background:var(--ink);border-color:var(--ink);color:#fff}.stage-list{display:flex;flex-direction:column;gap:8px}.stage-list-card{display:flex;align-items:center;gap:10px;padding:11px 12px}.stage-list-move{font-size:12px;padding:6px 8px;min-height:36px}.alert-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.alert-chip{font:inherit;font-size:12px;cursor:pointer;border:1px solid var(--warning-border);background:var(--warning-bg);color:var(--warning-text);border-radius:99px;padding:5px 12px;text-align:left}.alert-chip:hover{border-color:#d9b45e;background:#fdefcf}.parse-row{display:flex;align-items:baseline;gap:8px;padding:6px 0;border-bottom:1px dashed var(--border);font-size:13px;cursor:pointer}.parse-row-block{align-items:flex-start}.parse-field{min-width:118px;color:var(--text-muted);font-size:12px}.parse-found{font-weight:600;overflow-wrap:anywhere}.parse-existing{font-size:11px;color:var(--warning-text);background:var(--warning-bg);border:1px solid var(--warning-border);border-radius:99px;padding:1px 8px;margin-left:6px;white-space:nowrap}.parse-list{margin:4px 0 0;padding-left:18px;font-size:12.5px;line-height:1.5}.jd-drop{border:1.5px dashed var(--border);border-radius:8px;padding:16px 14px;text-align:center;font-size:13px;cursor:pointer;background:var(--bg-subtle, #fafafa);transition:border-color .12s,background .12s}.jd-drop:hover{border-color:var(--text-muted)}.jd-drop.over{border-color:var(--text);border-style:solid;background:#eef2f7}.jd-drop.disabled{opacity:.6;cursor:default}.portal-shell{min-height:100vh;background:var(--portal-bg, #f4f6f9);display:flex;flex-direction:column}.portal-work{flex:1;display:flex;flex-direction:column;min-height:0}.portal-roles{display:flex;gap:8px;padding:10px 16px;overflow-x:auto;border-bottom:1px solid var(--border);background:#fff}.portal-roles-head{display:none}.portal-role{flex:none;text-align:left;border:1px solid var(--border);border-radius:8px;background:#fff;padding:8px 12px;cursor:pointer;display:flex;flex-direction:column;gap:2px;font:inherit;color:inherit}.portal-role:hover{border-color:var(--text-muted)}.portal-role.active{border-color:var(--text);background:#eef2f7;box-shadow:inset 3px 0 0 var(--text)}.portal-role-title{font-weight:700;white-space:nowrap}.portal-role-sub{font-size:11px;color:var(--text-muted);display:flex;align-items:center;gap:6px;white-space:nowrap}.portal-role-flag{font-size:10px;border-color:#b23b3b;color:#b23b3b}.portal-main{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;padding:14px 16px 24px;gap:10px}.portal-main-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.portal-board{overflow-x:auto;padding-bottom:8px}.portal-card{cursor:pointer}.portal-column-locked{opacity:.75;background:transparent}.portal-column-note{font-size:11px;color:var(--text-muted);padding:6px 4px;line-height:1.4}.portal-prose{font-size:13px;line-height:1.55;white-space:pre-wrap}.portal-experience{padding-left:10px;border-left:2px solid var(--border)}.portal-resume-btn{align-self:flex-start;margin-top:8px;text-decoration:none}.portal-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#14161a73;display:flex;align-items:flex-start;justify-content:center;padding:24px 16px;overflow-y:auto;z-index:50}.portal-modal{background:#fff;border-radius:10px;border:1px solid var(--border);box-shadow:0 12px 40px #0000002e;width:100%;max-width:620px;display:flex;flex-direction:column;max-height:100%}.portal-modal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:14px 16px;border-bottom:1px solid var(--border);position:sticky;top:0;background:#fff;border-radius:10px 10px 0 0}.portal-modal-body{padding:14px 16px 18px;display:flex;flex-direction:column;gap:12px;overflow-y:auto}@media (min-width: 820px){.portal-work{flex-direction:row}.portal-roles{width:240px;flex:none;flex-direction:column;overflow-x:visible;overflow-y:auto;border-bottom:none;border-right:1px solid var(--border);padding:14px 12px}.portal-roles-head{display:block;font-size:12px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-muted);padding:0 4px 4px}.portal-role-title,.portal-role-sub{white-space:normal}.portal-main{padding:16px 20px 28px}}.portal-preview-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 16px;font-size:13px;color:var(--warning-text);background:var(--warning-bg);border-bottom:1px solid var(--warning-border)}.portal-preview-bar-note{display:block;font-size:12px;opacity:.85}.portal-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;border-bottom:1px solid var(--border);background:#fff;position:sticky;top:0;z-index:5}.portal-bar-client{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.portal-page{max-width:720px;margin:0 auto;padding:20px 16px 48px}.portal-nudge{border:1px solid var(--accent-border, #7aa2f7);background:var(--accent-bg, #eef3ff);border-radius:10px;padding:12px 14px;margin-bottom:18px}.portal-role-card{padding:14px;display:block;transition:border-color .12s ease,transform .12s ease}.portal-role-card:hover{border-color:var(--accent-border, #7aa2f7)}.portal-waiting-pill{flex:none;background:var(--accent, #3b63c4);color:#fff;border-radius:999px;padding:3px 10px;font-size:11px;font-weight:700;white-space:nowrap}.portal-stage-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.portal-stage-chip{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--border);border-radius:999px;padding:2px 9px;font-size:11px;color:var(--text-muted);background:#fff}.portal-stage-count{font-weight:700;color:var(--text, #1c1c1c)}.portal-split{display:grid;grid-template-columns:1fr;min-height:calc(100vh - 49px)}.portal-rail{background:#fff;border-bottom:1px solid var(--border);max-height:38vh;overflow-y:auto}.portal-detail{padding:16px;min-width:0}@media (min-width: 820px){.portal-bar{padding:12px 24px}.portal-split{grid-template-columns:280px 1fr}.portal-rail{border-bottom:none;border-right:1px solid var(--border);max-height:none;overflow-y:visible}.portal-detail{padding:20px}}
