*{box-sizing:border-box;margin:0;padding:0}:root{--bg:#f4f6fa;--card:#fff;--line:#e7ebf2;--line-strong:#d8deeb;--text:#1b2434;--muted:#76809a;--primary:#4f46e5;--primary-deep:#4338ca;--primary-soft:#eef0ff;--grad:linear-gradient(135deg, #4f46e5, #38bdf8);--green:#10b981;--amber:#e8a13c;--red:#e15a4e;--shadow:0 1px 2px #1720400d, 0 10px 30px #17204012;--shadow-pop:0 12px 44px #17204029;--r:16px;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,Segoe UI,sans-serif}.mobile-only,.mobile-only-cell{display:none}.content:has(.opportunity-workbench){max-width:1600px;padding:18px 18px 44px}body:has(.opportunity-workbench) .topnav-in{max-width:1600px}.opportunity-workbench{color:#263142}.wb-titlebar{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.wb-titlebar h1{font-size:18px;font-weight:700;line-height:1.3}.wb-titlebar p{color:#8a94a5;margin-top:3px;font-size:11.5px}.wb-actions{align-items:center;gap:8px;display:flex}.wb-actions .btn{min-width:78px;height:32px;box-shadow:none;border-radius:4px;padding:0 14px;font-size:12.5px}.wb-actions .btn.primary{background:#1769e0;border-color:#1769e0}.unsaved-dot{color:#e8871e;margin-right:4px;font-size:12px}.ledger-editor{background:#fff;border:1px solid #dce2ea;box-shadow:0 1px 2px #18274008}.editor-section{border-bottom:1px solid #dce2ea;padding:11px 14px 8px;position:relative}.editor-section:last-child{border-bottom:none}.section-title{color:#1769e0;border-left:4px solid #1769e0;margin-bottom:8px;padding-left:9px;font-size:13px;font-weight:700;line-height:18px}.ledger-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px 14px;display:grid}.ledger-grid label,.execution-grid label{grid-template-columns:94px minmax(0,1fr);align-items:center;gap:7px;min-width:0;display:grid}.ledger-grid label>span,.execution-grid label>span{text-align:right;color:#4f5968;white-space:nowrap;font-size:12px}.ledger-grid label>span i,.execution-grid label>span i{color:#e5484d;margin-left:3px;font-style:normal}.ledger-grid .span-2{grid-column:span 2}.ledger-grid .span-3{grid-column:span 3}.ledger-grid .span-4{grid-column:1/-1}.multiline-label{align-items:start!important}.project-content-input{resize:none;height:52px;padding:6px 8px;line-height:1.45}.cell-input{color:#263142;background:#fff;border:1px solid #cdd5df;border-radius:3px;outline:none;width:100%;min-width:0;height:29px;padding:0 8px;font-size:12.5px;transition:border-color .15s,box-shadow .15s}select.cell-input{cursor:pointer;padding-right:26px}.cell-input:hover{border-color:#aebaca}.cell-input:focus{border-color:#1769e0;box-shadow:0 0 0 2px #1769e01a}.cell-input.code{font-variant-numeric:tabular-nums;letter-spacing:.2px}.cell-input.accent-value{color:#175fc9;background:#f4f8ff}.num-input{text-align:right;font-variant-numeric:tabular-nums}.strong-number{color:#174e98;font-weight:700}.compact-section{padding-top:9px;padding-bottom:9px}.execution-grid{grid-template-columns:minmax(0,3fr) minmax(330px,1.35fr);gap:6px 16px;display:grid}.progress-field{position:relative;grid-template-columns:94px minmax(0,1fr)!important;align-items:start!important}.ledger-textarea{resize:none;height:72px;padding:6px 74px 6px 8px;line-height:1.45}.history-link{color:#1769e0;background:0 0;border:none;font-size:12px;position:absolute;bottom:7px;right:8px}.revenue-grid{grid-template-columns:1fr 1fr;align-content:start;gap:6px 10px;display:grid}.revenue-grid label{grid-template-columns:78px minmax(0,1fr)}.wide-line{grid-column:1/-1}.one-line-textarea{resize:none;height:31px;padding:5px 8px;line-height:1.4}.ledger-list{background:#fff;border:1px solid #dce2ea;margin-top:10px}.list-toolbar{border-bottom:1px solid #dce2ea;justify-content:space-between;align-items:center;gap:12px;min-height:43px;padding:6px 10px;display:flex}.list-name{color:#1769e0;white-space:nowrap;font-size:13.5px;font-weight:700}.list-name span{color:#6f7886;margin-left:14px;font-size:11.5px;font-weight:500}.list-filters{flex-wrap:wrap;flex:1;justify-content:flex-end;gap:7px;min-width:0;display:flex}.list-filters select,.toolbar-btn{color:#445064;background:#fff;border:1px solid #d1d8e1;border-radius:3px;height:29px;padding:0 26px 0 9px;font-size:11.5px}.toolbar-btn{cursor:pointer;padding:0 10px}.toolbar-btn:hover{color:#1769e0;border-color:#93b7ea}.ledger-search{background:#fff;border:1px solid #d1d8e1;border-radius:3px;align-items:center;gap:6px;width:275px;height:29px;padding:0 9px;display:flex}.ledger-search span{color:#758195;font-size:17px;transform:rotate(-15deg)}.ledger-search input{border:none;outline:none;flex:1;min-width:0;font-size:11.5px}.ledger-table-wrap{min-height:216px;max-height:330px;overflow:auto}.opportunity-workbench .ledger-table{border-collapse:separate;border-spacing:0;table-layout:fixed;width:100%;min-width:1180px;font-size:11.5px}.opportunity-workbench .ledger-table th{z-index:2;color:#5f6978;text-align:left;white-space:nowrap;background:#f4f6f8;border-bottom:1px solid #d8dee6;border-right:1px solid #e1e5ea;height:30px;padding:0 8px;font-weight:600;position:sticky;top:0}.opportunity-workbench .ledger-table td{color:#344054;text-overflow:ellipsis;white-space:nowrap;border-bottom:1px solid #e7ebf0;border-right:1px solid #e7ebf0;height:29px;padding:4px 8px;overflow:hidden}.opportunity-workbench .ledger-table tbody tr{cursor:pointer}.opportunity-workbench .ledger-table tbody tr:hover td{background:#f5f9ff}.opportunity-workbench .ledger-table tbody tr.selected td{background:#ddf3ff;border-bottom-color:#9cd8f5}.opportunity-workbench .ledger-table th:first-child,.opportunity-workbench .ledger-table td:first-child{text-align:center;font-variant-numeric:tabular-nums;width:78px}.opportunity-workbench .ledger-table th:nth-child(2),.opportunity-workbench .ledger-table td:nth-child(2){width:86px}.opportunity-workbench .ledger-table th:nth-child(3),.opportunity-workbench .ledger-table td:nth-child(3){width:110px}.opportunity-workbench .ledger-table th:nth-child(4),.opportunity-workbench .ledger-table td:nth-child(4){width:82px}.opportunity-workbench .ledger-table th:nth-child(5),.opportunity-workbench .ledger-table td:nth-child(5){width:130px}.opportunity-workbench .ledger-table th:nth-child(6),.opportunity-workbench .ledger-table td:nth-child(6){width:100px}.opportunity-workbench .ledger-table .name-col{width:290px}.opportunity-workbench .ledger-table th:nth-child(8),.opportunity-workbench .ledger-table td:nth-child(8){width:170px}.opportunity-workbench .ledger-table th:nth-child(9),.opportunity-workbench .ledger-table td:nth-child(9){width:90px}.opportunity-workbench .ledger-table th:nth-child(10),.opportunity-workbench .ledger-table td:nth-child(10){text-align:right;width:110px}.project-name-cell strong{font-weight:550}.project-stage{color:#185fbd}.category-tag{color:#d26a10}.category-tag.stock{color:#526173}.amount-cell{font-variant-numeric:tabular-nums;font-weight:650;color:#174e98!important}.ledger-pager{color:#6f7886;justify-content:space-between;align-items:center;min-height:40px;padding:5px 10px;font-size:11.5px;display:flex}.ledger-pager>div{align-items:center;gap:5px;display:flex}.ledger-pager button,.ledger-pager b{color:#566175;background:#fff;border:1px solid #dce2ea;border-radius:3px;place-items:center;width:27px;height:27px;font-weight:500;display:grid}.ledger-pager b{color:#fff;background:#1769e0;border-color:#1769e0}.ledger-pager select{color:#566175;border:1px solid #dce2ea;border-radius:3px;height:28px;font-size:11.5px}.empty-ledger{text-align:center;color:#8a94a5;padding:50px 20px;font-size:13px}.selected-project{background:#f7f9fc;border:1px solid #e2e7ee;margin-bottom:16px;padding:10px 12px}.selected-project span{color:#8a94a5;margin-bottom:3px;font-size:11px;display:block}.selected-project strong{font-size:13px}.detail-text-block{border-top:1px dashed #dce2ea;margin-top:14px;padding-top:12px;font-size:13px;line-height:1.7}.detail-text-block .k{color:#7b8597;margin-bottom:5px;font-size:11.5px}.detail-text-block .preline{white-space:pre-line}.detail-text-block.warning{color:#b75b10}@media (width<=900px){.desktop-only{display:none!important}.mobile-only{display:block}.mobile-only-cell{display:flex!important}.content:has(.opportunity-workbench){padding:16px 14px 92px}.mobile-page-head{margin:2px 0 14px}.mobile-page-head h1{font-size:20px}.mobile-page-head p{color:#8791a3;margin-top:3px;font-size:12px}.ledger-list{background:0 0;border:none;margin-top:0}.list-toolbar{background:#fff;border:1px solid #e1e6ee;border-radius:7px;padding:12px;display:block}.list-filters{grid-template-columns:1fr 1fr;gap:8px;display:grid}.ledger-search{border-radius:5px;grid-column:1/-1;width:100%;height:38px}.list-filters select{border-radius:5px;width:100%;height:36px;padding-left:10px}.ledger-table-wrap{max-height:none;margin-top:10px;overflow:visible}.opportunity-workbench .ledger-table{min-width:0;display:block}.opportunity-workbench .ledger-table tbody{display:block}.opportunity-workbench .ledger-table tbody tr{box-shadow:none;background:#fff;border:1px solid #e1e6ee;border-radius:7px;margin-bottom:10px;padding:12px 14px;display:block}.opportunity-workbench .ledger-table tbody tr.selected td{background:0 0;border-bottom-color:#eef1f5}.opportunity-workbench .ledger-table td{white-space:normal;border-bottom:1px solid #eef1f5;border-right:none;height:auto;min-height:32px;padding:7px 0;display:none}.opportunity-workbench .ledger-table td:before{color:#8993a5;font-size:11.5px}.opportunity-workbench .ledger-table td:nth-child(6),.opportunity-workbench .ledger-table td:nth-child(7),.opportunity-workbench .ledger-table td:nth-child(9),.opportunity-workbench .ledger-table td:nth-child(10),.opportunity-workbench .ledger-table td:nth-child(11){text-align:right;width:auto;display:flex}.opportunity-workbench .ledger-table td:nth-child(7){text-align:left;padding:1px 0 11px;display:block}.opportunity-workbench .ledger-table td:nth-child(7):before{display:none}.project-name-cell strong{color:#202b3c;font-size:14px;line-height:1.45;display:block}.project-name-cell small{color:#8b95a7;margin-top:3px;font-size:11.5px}.mobile-row-action{border-bottom:none!important;justify-content:flex-end!important;padding-bottom:0!important}.mobile-row-action:before{display:none}.mobile-row-action button{color:#1769e0;background:#f2f7ff;border:1px solid #a9c7f1;border-radius:4px;height:30px;padding:0 13px;font-size:12px}.ledger-pager{margin-top:4px;padding:9px 2px}.follow-modal{border-radius:16px 16px 0 0}}html{-webkit-font-smoothing:antialiased}body{background:var(--bg);color:var(--text)}button{font:inherit;cursor:pointer}input,select,textarea{font:inherit;color:var(--text)}a{color:inherit;text-decoration:none}.num{font-variant-numeric:tabular-nums}.muted{color:var(--muted)}.btn{border:1px solid var(--line);height:38px;color:var(--text);background:#fff;border-radius:11px;justify-content:center;align-items:center;gap:6px;padding:0 16px;font-size:13.5px;font-weight:550;transition:all .18s;display:inline-flex}.btn:hover{background:#fafbff;border-color:#c7cdea}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff;box-shadow:0 6px 16px #4f46e542}.btn.primary:hover{background:var(--primary-deep)}.btn.danger{color:var(--red);border-color:#e15a4e66}.btn.danger:hover{background:#fef3f2}.btn.ghost{color:var(--muted);background:0 0;border:none}.btn.ghost:hover{color:var(--primary);background:var(--primary-soft)}.btn.block{width:100%}.btn[disabled]{opacity:.55;pointer-events:none}.btn.sm{border-radius:9px;height:30px;padding:0 12px;font-size:12.5px}.input,.select,.textarea{border:1.5px solid var(--line);background:#fff;border-radius:11px;outline:none;width:100%;padding:0 13px;font-size:14px;transition:all .18s}.input,.select{height:42px}.textarea{resize:vertical;min-height:84px;padding:10px 13px;line-height:1.7}.input:focus,.select:focus,.textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3.5px #4f46e51a}.select{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%2376809A' stroke-width='1.8' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-position:right 12px center;background-repeat:no-repeat;padding-right:32px}.form-item{margin-bottom:16px}.form-item>label{color:var(--muted);margin-bottom:7px;font-size:12.5px;font-weight:550;display:block}.form-item .req:before{content:"*";color:var(--red);margin-right:3px}.form-row{grid-template-columns:1fr 1fr;gap:14px;display:grid}.toast{z-index:999;color:#fff;box-shadow:var(--shadow-pop);background:#1b2434;border-radius:12px;padding:11px 20px;font-size:13.5px;animation:.25s toastIn;position:fixed;top:18px;left:50%;transform:translate(-50%)}.toast.err{background:var(--red)}@keyframes toastIn{0%{opacity:0;transform:translate(-50%,-8px)}}.mask{z-index:100;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#1720406b;justify-content:center;align-items:center;padding:20px;animation:.18s fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}}.modal{width:520px;max-width:100%;max-height:calc(100dvh - 40px);box-shadow:var(--shadow-pop);background:#fff;border-radius:18px;animation:.22s cubic-bezier(.22,1.2,.36,1) popIn;overflow-y:auto}@keyframes popIn{0%{opacity:0;transform:translateY(14px)scale(.98)}}.modal-head{justify-content:space-between;align-items:center;padding:18px 22px 0;display:flex}.modal-head h3{font-size:16.5px;font-weight:700}.modal-close{background:var(--bg);width:30px;height:30px;color:var(--muted);border:none;border-radius:9px;font-size:15px}.modal-close:hover{background:var(--primary-soft);color:var(--primary)}.modal-body{padding:18px 22px 22px}.modal-foot{justify-content:flex-end;gap:10px;padding:0 22px 20px;display:flex}.login-wrap{min-height:100dvh;display:flex}.login-left{background:var(--grad);color:#fff;flex-direction:column;flex:1.1;justify-content:space-between;padding:56px 60px;display:flex;position:relative;overflow:hidden}.login-left:after{content:"";background:#ffffff1f;border-radius:50%;width:520px;height:520px;position:absolute;top:-160px;right:-180px}.login-left:before{content:"";background:#ffffff1a;border-radius:50%;width:380px;height:380px;position:absolute;bottom:-150px;left:-140px}.left-brand{z-index:2;align-items:center;gap:12px;display:flex;position:relative}.logo-mark{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#ffffff2e;border-radius:13px;place-items:center;width:42px;height:42px;display:grid}.logo-mark svg{width:22px;height:22px}.left-brand .n{font-size:17px;font-weight:700}.left-hero{z-index:2;position:relative}.left-hero h1{letter-spacing:1px;font-size:clamp(28px,3vw,40px);font-weight:750;line-height:1.35}.left-hero p{opacity:.85;max-width:420px;margin-top:18px;font-size:14.5px;line-height:1.9}.left-feats{z-index:2;flex-wrap:wrap;gap:26px;display:flex;position:relative}.left-feats div{opacity:.9;align-items:center;gap:8px;font-size:12.5px;display:flex}.left-feats i{background:#fff;border-radius:50%;width:6px;height:6px}.login-right{flex:1;justify-content:center;align-items:center;padding:40px 24px;display:flex}.login-form{width:380px;max-width:100%}.login-form h2{font-size:27px;font-weight:750}.login-form .tip{color:var(--muted);margin:10px 0 30px;font-size:13.5px}.login-form .field{margin-bottom:18px}.login-form .field label{color:var(--muted);margin-bottom:8px;font-size:13px;font-weight:500;display:block}.login-form .field input{border:1.5px solid var(--line);background:#fff;border-radius:13px;outline:none;width:100%;height:48px;padding:0 15px;font-size:14.5px;transition:all .2s}.login-form .field input:focus{border-color:var(--primary);box-shadow:0 0 0 4px #4f46e51a}.login-btn{background:var(--primary);color:#fff;letter-spacing:1px;border:none;border-radius:999px;width:100%;height:50px;margin-top:10px;font-size:15.5px;font-weight:650;transition:all .2s;box-shadow:0 8px 22px #4f46e552}.login-btn:hover{background:var(--primary-deep)}.login-btn[disabled]{opacity:.6;pointer-events:none}.login-err{color:var(--red);background:#fef3f2;border-radius:11px;margin-top:14px;padding:10px 14px;font-size:13px}.login-foot{text-align:center;color:var(--muted);margin-top:24px;font-size:12.5px}.topnav{z-index:40;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);background:#ffffffe0;position:sticky;top:0}.topnav-in{align-items:center;gap:30px;max-width:1280px;height:60px;margin:0 auto;padding:0 24px;display:flex}.tn-brand{cursor:pointer;align-items:center;gap:10px;font-size:16px;font-weight:750;display:flex}.tn-brand .logo-mark{background:var(--grad);border-radius:10px;width:34px;height:34px}.tn-brand .logo-mark svg{width:18px;height:18px}.tn-links{gap:4px;height:60px;display:flex}.tn-links a{color:var(--muted);cursor:pointer;align-items:center;padding:0 15px;font-size:14px;display:flex;position:relative}.tn-links a.on{color:var(--text);font-weight:650}.tn-links a.on:after{content:"";background:var(--primary);border-radius:3px 3px 0 0;height:3px;position:absolute;bottom:-1px;left:15px;right:15px}.tn-right{align-items:center;gap:12px;margin-left:auto;display:flex}.tn-user{cursor:pointer;border-radius:10px;align-items:center;gap:9px;padding:6px 8px;font-size:13.5px;font-weight:600;display:flex;position:relative}.tn-user:hover{background:var(--bg)}.avatar{background:var(--grad);color:#fff;border-radius:50%;flex-shrink:0;place-items:center;width:31px;height:31px;font-size:12.5px;font-weight:700;display:grid}.user-menu{width:168px;box-shadow:var(--shadow-pop);border:1px solid var(--line);z-index:50;background:#fff;border-radius:13px;padding:6px;position:absolute;top:calc(100% + 8px);right:0}.user-menu .um-item{cursor:pointer;border-radius:8px;align-items:center;gap:8px;padding:9px 12px;font-size:13px;font-weight:500;display:flex}.user-menu .um-item:hover{background:var(--primary-soft);color:var(--primary)}.user-menu .um-item.danger:hover{color:var(--red);background:#fef3f2}.user-menu .um-head{border-bottom:1px solid var(--line);margin-bottom:4px;padding:10px 12px}.user-menu .um-head .n{font-size:13.5px;font-weight:700}.user-menu .um-head .r{color:var(--muted);margin-top:2px;font-size:11px}.content{max-width:1280px;margin:0 auto;padding:24px 24px 60px}.page-head{justify-content:space-between;align-items:flex-end;gap:14px;margin-bottom:20px;display:flex}.page-title{font-size:22px;font-weight:750}.page-sub{color:var(--muted);margin-top:5px;font-size:13px}.actions{flex-wrap:wrap;gap:10px;display:flex}.stats{grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px;display:grid}.stat{background:var(--card);border-radius:var(--r);box-shadow:var(--shadow);align-items:flex-start;gap:14px;padding:18px 20px;display:flex}.stat .ic{border-radius:13px;flex-shrink:0;place-items:center;width:42px;height:42px;display:grid}.stat .ic svg{width:20px;height:20px}.ic-1{color:var(--primary);background:#eef0ff}.ic-2{color:#0e9fd8;background:#e8f7ff}.ic-3{color:#d97706;background:#fff4e5}.ic-4{color:#0e9f6e;background:#e9fbf3}.stat .k{color:var(--muted);font-size:12.5px}.stat .v{margin-top:5px;font-size:23px;font-weight:750}.stat .v em{color:var(--muted);font-size:13px;font-style:normal;font-weight:500}.stat .d{color:#0e9f6e;margin-top:5px;font-size:11.5px}.stat .d.warn{color:#d97706}.filters{background:var(--card);border-radius:var(--r);box-shadow:var(--shadow);flex-direction:column;gap:12px;margin-bottom:16px;padding:14px 16px;display:flex}.filters-line{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.filters-label{color:var(--muted);flex-shrink:0;width:52px;font-size:12px}.seg{background:#f1f3f9;border-radius:11px;padding:3px;display:flex}.seg span{color:var(--muted);cursor:pointer;white-space:nowrap;border-radius:8px;padding:7px 15px;font-size:13px;transition:all .15s}.seg span.on{color:var(--primary);background:#fff;font-weight:650;box-shadow:0 1px 4px #1720401a}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{color:var(--muted);cursor:pointer;background:#f1f3f9;border:1px solid #0000;border-radius:999px;padding:6px 13px;font-size:12.5px;transition:all .15s}.chip:hover{color:var(--primary)}.chip.on{color:var(--primary);background:var(--primary-soft);border-color:#4f46e540;font-weight:600}.filters .search{border:1.5px solid var(--line);background:#fff;border-radius:11px;outline:none;width:210px;height:38px;margin-left:auto;padding:0 14px;font-size:13px}.filters .search:focus{border-color:var(--primary)}.filters .select{width:130px;height:38px;font-size:13px}.date-range{align-items:center;gap:6px;display:flex}.date-range input{border:1.5px solid var(--line);background:#fff;border-radius:11px;outline:none;width:132px;height:38px;padding:0 10px;font-size:12.5px}.date-range input:focus{border-color:var(--primary)}.table-card{background:var(--card);border-radius:var(--r);box-shadow:var(--shadow);overflow:hidden}.table-scroll{overflow-x:auto}table{border-collapse:collapse;width:100%;min-width:1060px;font-size:13.5px}thead th{text-align:left;color:var(--muted);border-bottom:1px solid var(--line);white-space:nowrap;background:#fafbfd;padding:10px 12px;font-size:12px;font-weight:600}thead th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}thead th.sortable:hover{color:var(--primary)}tbody td{vertical-align:middle;border-bottom:1px solid #f1f4f9;padding:10px 12px;font-size:13px}tbody tr{transition:background .12s}tbody tr:hover{background:#f8f9ff}tbody tr:last-child td{border-bottom:none}tbody tr.clickable{cursor:pointer}.checkbox{width:16px;height:16px;accent-color:var(--primary);cursor:pointer}.opp-name{font-size:13px;font-weight:650}.opp-name a:hover{color:var(--primary)}.opp-sub{color:var(--muted);margin-top:2px;font-size:11.5px}.status-dot{color:var(--muted);white-space:nowrap;align-items:center;gap:6px;font-size:12.5px;display:inline-flex}.status-dot i{background:var(--primary);border-radius:50%;width:7px;height:7px}.status-dot.win i{background:var(--green)}.status-dot.lose i{background:#c0c4d0}.status-dot.hold i{background:var(--amber)}.stage-pill{white-space:nowrap;border-radius:999px;padding:4px 11px;font-size:12px;font-weight:550;display:inline-block}.stage-text{color:var(--text);white-space:nowrap;font-size:13px}.st-1{color:#0891b2;background:#e0f7fc}.st-2{color:#2563eb;background:#e4edff}.st-3{color:#7c3aed;background:#f0e8ff}.st-4{color:#d97706;background:#fff1db}.st-5{color:#059669;background:#dcf7ec}.st-6{color:#8a8fa3;background:#eff1f6}.amount{text-align:right;white-space:nowrap;color:#c76a15;font-size:13px;font-weight:700}.win-rate{font-variant-numeric:tabular-nums;font-weight:600}.rate{align-items:center;gap:8px;min-width:104px;display:flex}.rate .bar{background:#eef1f7;border-radius:99px;flex:1;height:5px;overflow:hidden}.rate .bar i{background:var(--grad);border-radius:99px;height:100%;display:block}.rate b{font-size:12.5px;font-weight:600}.days{text-align:center;min-width:42px;color:var(--muted);white-space:nowrap;background:#f1f3f9;border-radius:8px;padding:3px 9px;font-size:12px;display:inline-block}.days.hot{color:#d97706;background:#fff1db;font-weight:650}.days-num{font-variant-numeric:tabular-nums;color:var(--text);font-weight:550}.days-num.hot{color:#d97706;font-weight:700}.follow-cell{color:var(--muted);max-width:190px;font-size:12.5px}.follow-cell .fc-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.follow-cell .fc-time{color:#a6adc2;margin-top:3px;font-size:11px}.no-follow{color:#c3c8d8;font-size:12.5px}.time-cell{color:var(--muted);white-space:nowrap;font-size:12.5px}.row-ops{white-space:nowrap;gap:12px;display:flex}.row-ops span{color:var(--primary);cursor:pointer;font-size:12.5px;font-weight:550}.row-ops span:hover{text-decoration:underline}.row-ops span.danger{color:var(--red)}.pager{color:var(--muted);border-top:1px solid #f1f4f9;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:14px 18px;font-size:12.5px;display:flex}.pager .pages{align-items:center;gap:6px;display:flex}.pager .pages i{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:9px;place-items:center;min-width:30px;height:30px;padding:0 6px;font-size:12.5px;font-style:normal;display:grid}.pager .pages i.on{background:var(--primary);color:#fff;border-color:var(--primary)}.pager .pages i.dis{opacity:.4;pointer-events:none}.pager .size-sel{border:1px solid var(--line);background:#fff;border-radius:8px;outline:none;height:30px;padding:0 6px;font-size:12px}.empty{text-align:center;color:var(--muted);padding:70px 20px}.empty .ic{background:var(--primary-soft);width:64px;height:64px;color:var(--primary);border-radius:20px;place-items:center;margin:0 auto 14px;display:grid}.empty .t{color:var(--text);font-size:15px;font-weight:650}.empty .d{margin-top:6px;font-size:12.5px}.loading-row{text-align:center;color:var(--muted);padding:46px;font-size:13px}.back{color:var(--muted);cursor:pointer;align-items:center;gap:6px;margin-bottom:16px;font-size:13px;display:inline-flex}.back:hover{color:var(--primary)}.detail-grid{grid-template-columns:1.5fr 1fr;align-items:start;gap:16px;display:grid}.panel{background:var(--card);border-radius:var(--r);box-shadow:var(--shadow);padding:22px}.panel+.panel{margin-top:16px}.panel-title{justify-content:space-between;align-items:center;margin-bottom:16px;font-size:15px;font-weight:700;display:flex}.info-grid{grid-template-columns:repeat(3,1fr);gap:18px 14px;display:grid}.info-item .k{color:var(--muted);margin-bottom:6px;font-size:12px}.info-item .val{font-size:14.5px;font-weight:600}.info-item .val.big{font-size:20px}.detail-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:18px;display:flex}.detail-name{font-size:20px;font-weight:750}.detail-sub{color:var(--muted);margin-top:6px;font-size:13px}.timeline{padding-left:22px;position:relative}.timeline:before{content:"";background:#eef1f7;border-radius:2px;width:2px;position:absolute;top:8px;bottom:8px;left:6px}.tl-item{padding-bottom:20px;position:relative}.tl-item:last-child{padding-bottom:2px}.tl-item:before{content:"";background:var(--primary);width:9px;height:9px;box-shadow:0 0 0 3px var(--primary-soft);border-radius:50%;position:absolute;top:5px;left:-19.5px}.tl-item:first-child:before{background:var(--green);box-shadow:0 0 0 3px #dcf7ec}.tl-time{color:#a6adc2;font-size:11.5px}.tl-content{margin-top:5px;font-size:13.5px;line-height:1.75}.tl-by{color:var(--muted);margin-top:4px;font-size:12px}.admin-tabs{background:#f1f3f9;border-radius:11px;gap:4px;width:fit-content;margin-bottom:18px;padding:3px;display:flex}.admin-tabs span{color:var(--muted);cursor:pointer;border-radius:8px;padding:8px 18px;font-size:13px}.admin-tabs span.on{color:var(--primary);background:#fff;font-weight:650;box-shadow:0 1px 4px #1720401a}.role-tag{border-radius:999px;padding:3px 10px;font-size:11.5px;font-weight:600;display:inline-block}.role-ADMIN{color:#7c3aed;background:#f0e8ff}.role-MANAGER{color:#2563eb;background:#e4edff}.role-SALES{color:var(--muted);background:#f1f3f9}.state-tag{font-size:12px}.state-tag.on{color:var(--green)}.state-tag.off{color:var(--red)}.stage-row{border-bottom:1px solid #f1f4f9;align-items:center;gap:10px;padding:12px 4px;display:flex}.stage-row:last-child{border-bottom:none}.stage-row .order{background:var(--primary-soft);width:26px;height:26px;color:var(--primary);border-radius:8px;flex-shrink:0;place-items:center;font-size:12px;font-weight:700;display:grid}.stage-row .nm{flex:1;font-size:14px;font-weight:600}.icon-btn{background:var(--bg);width:30px;height:30px;color:var(--muted);border:none;border-radius:8px;font-size:13px}.icon-btn:hover{background:var(--primary-soft);color:var(--primary)}.icon-btn.danger:hover{color:var(--red);background:#fef3f2}.setting-row{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.setting-row .input{width:110px}.help-text{color:var(--muted);margin-top:8px;font-size:12px;line-height:1.8}.option-config-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.option-panel{min-width:0}.option-panel .panel-title{align-items:flex-start;gap:12px}.option-panel .panel-title>div:first-child{min-width:0}.option-description{color:var(--muted);margin-top:4px;font-size:11.5px;font-weight:500;line-height:1.5}.option-empty{color:var(--muted);padding:16px 4px 4px;font-size:13px}.audit-toolbar{border-bottom:1px solid #f1f4f9;flex-wrap:wrap;align-items:center;gap:8px;padding:16px 18px;display:flex}.audit-toolbar .select{width:142px;height:38px;font-size:12.5px}.audit-toolbar .input{height:38px;font-size:12.5px}.audit-keyword{width:260px}.audit-date{width:142px}.audit-date-sep{color:var(--muted);font-size:12px}.audit-table td{vertical-align:middle}.audit-action{color:var(--primary);background:var(--primary-soft);white-space:nowrap;border-radius:7px;padding:4px 9px;font-size:12px;display:inline-block}.audit-summary{color:var(--text);max-width:460px}.system-log-toolbar{border-bottom:1px solid #f1f4f9;flex-wrap:wrap;align-items:center;gap:8px;padding:16px 18px;display:flex}.system-log-toolbar .select,.system-log-toolbar .input{height:38px;font-size:12.5px}.system-log-keyword{width:280px}.system-log-date{width:142px}.system-log-date-sep{color:var(--muted);font-size:12px}.system-log-table td{vertical-align:middle}.system-log-level{white-space:nowrap;border-radius:7px;padding:4px 9px;font-size:12px;display:inline-block}.system-log-level.error{color:#b42318;background:#fef3f2}.system-log-level.warn{color:#b54708;background:#fff4e5}.system-log-level.info{color:#175cd3;background:#eff8ff}.system-log-message{max-width:520px;color:var(--text)}.page-tabs{border-bottom:1px solid var(--line);gap:26px;padding:0 18px;display:flex;overflow-x:auto}.page-tabs span{color:var(--muted);cursor:pointer;white-space:nowrap;padding:13px 2px 11px;font-size:14px;position:relative}.page-tabs span:hover{color:var(--primary)}.page-tabs span.on{color:var(--primary);font-weight:650}.page-tabs span.on:after{content:"";background:var(--primary);border-radius:2px;height:2.5px;position:absolute;bottom:-1px;left:0;right:0}.f-rows{padding:4px 18px 10px}.f-row{flex-wrap:wrap;align-items:center;gap:10px;padding:10px 0 0;display:flex}.f-right{align-items:center;gap:14px;margin-left:auto;display:flex}.link{color:var(--muted);cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none;font-size:12.5px}.link:hover{color:var(--primary)}.chip.warn{color:#d97706;background:#fff4e5}.chip.warn.on{color:#b45309;background:#ffe9c7;border-color:#d9770659;font-weight:650}.more-panel{border:1px dashed var(--line-strong);background:#f8fafd;border-radius:12px;flex-wrap:wrap;gap:14px;margin-top:4px;padding:14px;display:flex}.mp-item{align-items:center;gap:8px;display:flex}.mp-item label{color:var(--muted);white-space:nowrap;font-size:12.5px}.mp-item .select{width:140px;height:36px;font-size:12.5px}.search2{border:1.5px solid var(--line);background:#fff;border-radius:11px;outline:none;width:240px;height:38px;padding:0 14px;font-size:13px}.search2:focus{border-color:var(--primary);box-shadow:0 0 0 3px #4f46e514}.sort-sel{width:168px;height:38px;font-size:12.5px}.dd{display:inline-block;position:relative}.dd-menu{border:1px solid var(--line);min-width:158px;box-shadow:var(--shadow-pop);z-index:60;background:#fff;border-radius:12px;padding:6px;animation:.15s fadeIn;position:absolute;top:calc(100% + 6px);right:0}.dd-menu .it{cursor:pointer;white-space:nowrap;border-radius:8px;padding:9px 12px;font-size:13px;font-weight:500}.dd-menu .it:hover{background:var(--primary-soft);color:var(--primary)}.dd-menu .it.dis{color:#c3c8d8;pointer-events:none}.amount{color:#c76a15}.pager-right{align-items:center;gap:10px;display:flex}.jumper{font-size:12.5px}.jumper-input{border:1px solid var(--line);text-align:center;border-radius:8px;outline:none;width:44px;height:28px;font-size:12.5px}.jumper-input:focus{border-color:var(--primary)}.crm-list{--crm:#2f6bff;--crm-deep:#1f54db;--crm-soft:#eef3ff;--crm-line:#e5eaf2;--crm-muted:#8b93a7;--crm-text:#1f2a37}.crm-list .page-head{margin-bottom:14px}.crm-list .page-title{color:var(--crm-text);letter-spacing:0;font-size:20px;font-weight:700}.crm-list .btn{height:34px;box-shadow:none;border-color:var(--crm-line);border-radius:4px;padding:0 14px;font-size:13px;font-weight:500}.crm-list .btn:hover{background:#f7f9fc;border-color:#c8d2e3}.crm-list .btn.primary{background:var(--crm);border-color:var(--crm);color:#fff;box-shadow:none}.crm-list .btn.primary:hover{background:var(--crm-deep)}.crm-list .btn.sm{border-radius:4px;height:28px}.crm-list .table-card{box-shadow:none;border:1px solid var(--crm-line);background:#fff;border-radius:4px}.crm-list .page-tabs{border-bottom:1px solid var(--crm-line);background:#fff;gap:28px;padding:0 16px}.crm-list .page-tabs span{color:var(--crm-muted);padding:12px 2px 10px;font-size:13.5px;font-weight:500}.crm-list .page-tabs span:hover{color:var(--crm)}.crm-list .page-tabs span.on{color:var(--crm);font-weight:600}.crm-list .page-tabs span.on:after{background:var(--crm);border-radius:0;height:2px}.crm-list .f-rows{border-bottom:1px solid var(--crm-line);background:#fafbfc;padding:6px 16px 12px}.crm-list .f-row{gap:8px;padding-top:8px}.crm-list .chips{gap:6px}.crm-list .chip{border:1px solid var(--crm-line);color:#5b6577;background:#fff;border-radius:3px;padding:4px 10px;font-size:12px;font-weight:450}.crm-list .chip:hover{color:var(--crm);background:var(--crm-soft);border-color:#b8cbff}.crm-list .chip.on{color:var(--crm);background:var(--crm-soft);border-color:#b8cbff;font-weight:600}.crm-list .chip.warn{color:#d97706;background:#fff8ed;border-color:#f5d9a8}.crm-list .chip.warn.on{color:#b45309;background:#fff1db;border-color:#e8b86d}.crm-list .link{color:var(--crm);font-size:12px}.crm-list .link:hover{color:var(--crm-deep);text-decoration:underline}.crm-list .more-panel{border:1px solid var(--crm-line);background:#fff;border-style:solid;border-radius:4px;padding:12px}.crm-list .mp-item label{color:var(--crm-muted);font-size:12px}.crm-list .select,.crm-list .search2,.crm-list .date-range input,.crm-list .jumper-input,.crm-list .size-sel{border:1px solid var(--crm-line);box-shadow:none;border-radius:4px}.crm-list .search2{height:32px;font-size:12.5px}.crm-list .search2:focus,.crm-list .select:focus,.crm-list .date-range input:focus,.crm-list .jumper-input:focus{border-color:var(--crm);box-shadow:0 0 0 2px #2f6bff1f}.crm-list .sort-sel{height:32px;font-size:12px}.crm-list .mp-item .select{height:32px}.crm-list table{min-width:1100px;font-size:12.5px}.crm-list thead th{color:#6b7385;border-bottom:1px solid var(--crm-line);background:#f7f8fa;padding:9px 10px;font-size:12px;font-weight:500}.crm-list tbody td{color:var(--crm-text);border-bottom:1px solid #eef1f6;padding:9px 10px;font-size:12.5px}.crm-list tbody tr:hover{background:#f5f8ff}.crm-list tbody tr:last-child td{border-bottom:1px solid #eef1f6}.crm-list .opp-name{color:var(--crm-text);font-size:12.5px;font-weight:600}.crm-list .opp-name a:hover{color:var(--crm)}.crm-list .opp-sub{color:var(--crm-muted);margin-top:1px;font-size:11px}.crm-list .status-dot{color:var(--crm-text);font-size:12px}.crm-list .status-dot i{background:var(--crm);width:6px;height:6px}.crm-list .stage-text{color:var(--crm-text);font-size:12.5px}.crm-list .amount{color:#e8871e;font-size:12.5px;font-weight:700}.crm-list .win-rate{font-weight:500}.crm-list .days-num{color:var(--crm-text);font-weight:500}.crm-list .days-num.hot{color:#e8871e;font-weight:700}.crm-list .follow-cell{color:#6b7385;max-width:200px;font-size:12px}.crm-list .follow-cell .fc-time{color:#a0a7b8;margin-top:2px;font-size:11px}.crm-list .time-cell{color:#6b7385;font-size:12px}.crm-list .row-ops{gap:10px}.crm-list .row-ops span{color:var(--crm);font-size:12px;font-weight:500}.crm-list .checkbox{accent-color:var(--crm)}.crm-list .pager{border-top:1px solid var(--crm-line);color:var(--crm-muted);background:#fafbfc;padding:10px 14px;font-size:12px}.crm-list .pager .pages i{border-color:var(--crm-line);border-radius:3px;min-width:28px;height:28px;font-size:12px}.crm-list .pager .pages i.on{background:var(--crm);border-color:var(--crm)}.crm-list .size-sel,.crm-list .jumper-input{border-radius:3px;height:28px}.crm-list .dd-menu{border-color:var(--crm-line);border-radius:4px;padding:4px;box-shadow:0 6px 20px #1f2a371f}.crm-list .dd-menu .it{border-radius:3px;padding:8px 10px;font-size:12.5px}.crm-list .dd-menu .it:hover{background:var(--crm-soft);color:var(--crm)}.crm-list .modal{border-radius:6px}.crm-list .modal-close,.crm-list .input,.crm-list .textarea,.crm-list .modal .select{border-radius:4px}.crm-list .input:focus,.crm-list .textarea:focus,.crm-list .modal .select:focus{border-color:var(--crm);box-shadow:0 0 0 2px #2f6bff1f}@media (width<=900px){.crm-list .table-card{background:0 0;border:none}.crm-list .table-card>.page-tabs,.crm-list .table-card>.f-rows,.crm-list .table-card>.pager{border:1px solid var(--crm-line);box-shadow:none;background:#fff;border-radius:4px}.crm-list .table-card>.page-tabs{border-bottom:none;border-radius:4px 4px 0 0}.crm-list .table-card>.f-rows{border-top:none;border-bottom:none;border-radius:0}.crm-list .table-card>.pager{border-top:1px solid var(--crm-line);border-radius:0 0 4px 4px;margin-top:0}.crm-list tbody tr{box-shadow:none;border:1px solid var(--crm-line);border-radius:4px;margin-bottom:10px}.crm-list tbody tr:hover{background:#fff}}.tabbar{display:none}@media (width<=900px){.login-wrap{flex-direction:column}.login-left{min-height:240px;padding:36px 26px}.left-hero p{font-size:13px}.left-feats,.tn-links{display:none}.content{padding:16px 14px 92px}.page-head{flex-direction:column;align-items:stretch}.page-head .actions{grid-template-columns:1fr 1fr;display:grid}.page-head .actions .btn.primary{order:-1;grid-column:span 2}.page-head .actions .dd{display:contents}.page-head .actions .dd>.btn{width:100%}.page-tabs{gap:20px;padding:0 14px}.f-rows{padding:4px 14px 10px}.search2,.sort-sel{width:100%}.f-row .f-right{width:100%;margin-left:0}.f-row:has(.search2){flex-direction:column;align-items:stretch}.dd-menu{left:auto;right:0}.more-panel{flex-direction:column;align-items:stretch}.mp-item .select{flex:1;width:auto}.table-scroll{overflow:visible}table{min-width:0}table,tbody,tr,td{display:block}thead{display:none}.table-card{box-shadow:none;background:0 0}.table-card>.page-tabs,.table-card>.f-rows,.table-card>.pager{background:var(--card);box-shadow:var(--shadow)}.table-card>.page-tabs{border-radius:14px 14px 0 0}.table-card>.f-rows{border-bottom:none;border-radius:0;margin-bottom:0;padding-bottom:14px}.table-card>.pager{border-radius:0 0 14px 14px;margin-top:0}tbody tr{background:var(--card);box-shadow:var(--shadow);border-radius:14px;margin-bottom:12px;padding:8px 16px;display:block;position:relative}tbody td{border-bottom:1px solid #f1f4f9;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;display:flex}tbody td:last-child{border-bottom:none}tbody td:before{content:attr(data-label);color:var(--muted);flex-shrink:0;font-size:12px}tbody td.no-label:before{display:none}tbody td.cell-check{border:none;width:auto;padding:0;position:absolute;top:12px;right:14px}tbody td.cell-check:before{display:none}tbody td.cell-name{padding-right:28px;display:block}tbody td.cell-name .opp-name{margin-bottom:2px}tbody td.cell-ops{justify-content:flex-end}tbody td.cell-ops:before{display:none}.amount{text-align:right}.follow-cell{text-align:right;max-width:58%}.follow-cell .fc-text{white-space:normal}.detail-grid,.option-config-grid{grid-template-columns:1fr}.audit-toolbar{align-items:stretch}.audit-keyword,.audit-toolbar .select,.audit-date{width:100%}.audit-date-sep{display:none}.system-log-toolbar{align-items:stretch}.system-log-keyword,.system-log-toolbar .select,.system-log-date{width:100%}.system-log-date-sep{display:none}.info-grid{grid-template-columns:repeat(2,1fr)}.form-row{grid-template-columns:1fr}.mask{align-items:flex-end;padding:0}.modal{border-radius:20px 20px 0 0;width:100%;max-height:92dvh}.pager{justify-content:center}.tabbar{left:12px;right:12px;bottom:calc(10px + env(safe-area-inset-bottom));z-index:60;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:#fffffff0;border-radius:18px;padding:6px;display:flex;position:fixed;box-shadow:0 8px 30px #17204029}.tabbar a{text-align:center;color:var(--muted);border-radius:13px;flex-direction:column;flex:1;align-items:center;gap:3px;padding:9px 0;font-size:11.5px;display:flex}.tabbar a svg{width:19px;height:19px}.tabbar a.on{background:var(--primary-soft);color:var(--primary);font-weight:650}}
