/* CRM shell styling lives in the parent document, outside tab iframes. */
.main-header .logo .logo-lg{line-height:1.15;padding-top:10px}
.main-header .logo .logo-lg b{display:block;font-size:16px;letter-spacing:.08em}
.main-header .logo .logo-lg small{display:block;margin-top:4px;color:#93c5fd;font-size:10px;font-weight:500;letter-spacing:.12em}
.main-header .logo .logo-mini{font-size:20px;font-weight:900}
.sidebar-menu a[url*="/crm/"]{margin:0 10px 5px;padding:10px 12px!important;border-radius:11px;color:#c8d7ee!important;transition:background .16s ease,color .16s ease,transform .16s ease}
.sidebar-menu a[data-system-menu],.sidebar-menu a[py="cggl"],.sidebar-menu a[py="qxgl"]{margin:0 10px 5px;padding:10px 12px!important;border-left:0!important;border-radius:11px;color:#c8d7ee!important;transition:background .16s ease,color .16s ease,transform .16s ease}
.sidebar-menu a[url*="/crm/"]:hover{background:rgba(255,255,255,.08)!important;color:#fff!important;transform:translateX(2px)}
.sidebar-menu a[data-system-menu]:hover,.sidebar-menu a[py="cggl"]:hover,.sidebar-menu a[py="qxgl"]:hover{background:rgba(255,255,255,.08)!important;color:#fff!important;transform:translateX(2px)}
.sidebar-menu li.active>a[url*="/crm/"]{background:linear-gradient(135deg,#2563eb,#0ea5e9)!important;color:#fff!important;box-shadow:0 10px 22px rgba(37,99,235,.28)}
.sidebar-menu li.active>a[data-system-menu],.sidebar-menu li.active>a[py="cggl"],.sidebar-menu li.active>a[py="qxgl"]{background:linear-gradient(135deg,#2563eb,#0ea5e9)!important;color:#fff!important;box-shadow:0 10px 22px rgba(37,99,235,.28)}
.sidebar-menu a[url*="/crm/"]>i{color:#7dd3fc}
.sidebar-menu a[data-system-menu]>i,.sidebar-menu a[py="cggl"]>i,.sidebar-menu a[py="qxgl"]>i{color:#7dd3fc}
.sidebar-menu li.active>a[url*="/crm/"]>i{color:#fff}
.sidebar-menu li.active>a[data-system-menu]>i,.sidebar-menu li.active>a[py="cggl"]>i,.sidebar-menu li.active>a[py="qxgl"]>i{color:#fff}
.sidebar-menu a[data-crm-group]{position:relative;margin-top:36px}
.sidebar-menu a[data-crm-group]:before{content:attr(data-crm-group);position:absolute;left:2px;top:-25px;color:#7ca3cf;font-size:11px;font-weight:700;letter-spacing:.12em;pointer-events:none}
.sidebar-menu a[data-crm-group="首页"]{margin-top:28px}
.sidebar-menu a[data-crm-group="首页"]:before{top:-21px}
.sidebar-menu .treeview-menu{padding-bottom:12px;background:linear-gradient(180deg,#101828,#13233d)!important}
.sidebar-menu .treeview-menu>li>a[url*="/crm/"]{padding-left:15px!important}
.layui-layer.crm-layer,.layui-layer:has(iframe[src*="/crm/"]){top:0!important;left:0!important;width:100vw!important;height:100vh!important;overflow:hidden;border-radius:0!important;box-shadow:none!important}
.layui-layer.crm-layer .layui-layer-title,.layui-layer:has(iframe[src*="/crm/"]) .layui-layer-title{height:58px;padding:0 72px 0 22px;border-bottom:1px solid #e6ebf2;background:#fff;color:#172033;font-size:17px;font-weight:800;line-height:58px}
.layui-layer.crm-layer .layui-layer-setwin,.layui-layer:has(iframe[src*="/crm/"]) .layui-layer-setwin{top:21px;right:20px}
.layui-layer.crm-layer .layui-layer-btn,.layui-layer:has(iframe[src*="/crm/"]) .layui-layer-btn{padding:13px 20px;border-top:1px solid #e6ebf2;background:#fbfdff}
.layui-layer.crm-layer .layui-layer-content,.layui-layer:has(iframe[src*="/crm/"]) .layui-layer-content{height:calc(100vh - 58px)!important}
.layui-layer.crm-layer .layui-layer-content iframe,.layui-layer:has(iframe[src*="/crm/"]) .layui-layer-content iframe{height:100%!important}
.layui-layer.crm-task-layer,.layui-layer.crm-task-layer:has(iframe[src*="/crm/task/"]){top:50%!important;left:50%!important;overflow:hidden;border-radius:22px!important;box-shadow:0 36px 90px rgba(15,23,42,.28)!important;transform:translate(-50%,-50%)}
.layui-layer.crm-task-layer .layui-layer-title,.layui-layer.crm-task-layer:has(iframe[src*="/crm/task/"]) .layui-layer-title{height:58px;padding:0 58px 0 20px;border-bottom:1px solid #e6ebf2;background:#fff;font-size:16px;line-height:58px}
.layui-layer.crm-task-layer .layui-layer-setwin,.layui-layer.crm-task-layer:has(iframe[src*="/crm/task/"]) .layui-layer-setwin{top:21px;right:20px}
.layui-layer.crm-task-layer .layui-layer-content,.layui-layer.crm-task-layer:has(iframe[src*="/crm/task/"]) .layui-layer-content{height:calc(100% - 58px)!important}
.layui-layer.crm-task-layer .layui-layer-content iframe,.layui-layer.crm-task-layer:has(iframe[src*="/crm/task/"]) .layui-layer-content iframe{height:100%!important}
.layui-layer.crm-bug-layer,.layui-layer.crm-bug-layer:has(iframe[src*="/crm/bug/add"]){top:50%!important;left:50%!important;width:min(1120px,96vw)!important;height:min(690px,92vh)!important;overflow:hidden;border-radius:22px!important;box-shadow:0 36px 90px rgba(15,23,42,.28)!important;transform:translate(-50%,-50%)}
.layui-layer.crm-bug-layer .layui-layer-title,.layui-layer.crm-bug-layer:has(iframe[src*="/crm/bug/add"]) .layui-layer-title{height:58px;padding:0 58px 0 20px;border-bottom:1px solid #e6ebf2;background:#fff;font-size:16px;line-height:58px}
.layui-layer.crm-bug-layer .layui-layer-setwin,.layui-layer.crm-bug-layer:has(iframe[src*="/crm/bug/add"]) .layui-layer-setwin{top:21px;right:20px}
.layui-layer.crm-bug-layer .layui-layer-content,.layui-layer.crm-bug-layer:has(iframe[src*="/crm/bug/add"]) .layui-layer-content{height:calc(100% - 58px)!important}
.layui-layer.crm-bug-layer .layui-layer-content iframe,.layui-layer.crm-bug-layer:has(iframe[src*="/crm/bug/add"]) .layui-layer-content iframe{height:100%!important}
@media(max-width:767px){.sidebar-menu a[data-crm-group]:before{display:none}.sidebar-menu a[data-crm-group]{margin-top:5px}.main-header .logo .logo-mini{font-size:18px}}
.crm-list-page{padding:18px;background:linear-gradient(180deg,#eef4ff 0,#f6f8fb 220px,#f3f6fb 100%)}
.crm-dialog-page{padding:22px 24px 82px;background:#f6f8fb}
.crm-dialog-page form[role=form]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 18px;width:100%;max-width:none;min-height:calc(100vh - 104px);margin:0;padding:22px 24px;background:#fff;border:1px solid #e6ebf2;border-radius:16px;box-shadow:0 10px 28px rgba(15,23,42,.06)}
.crm-dialog-page #follow-base-form{display:block;min-height:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}
.crm-dialog-page form[role=form]>.form-group{min-width:0;margin:0}
.crm-dialog-page form[role=form]>.form-group:has(textarea),.crm-dialog-page form[role=form]>.form-group:has(.faupload),.crm-dialog-page form[role=form]>.crm-summary,.crm-dialog-page form[role=form]>.layer-footer{grid-column:1/-1}
.crm-dialog-page form[role=form]>.form-group>.control-label,.crm-dialog-page form[role=form]>.form-group>div{float:none;width:100%;margin:0;text-align:left}
.crm-dialog-page form[role=form] .form-control{height:40px;border-color:#dbe3ef;border-radius:9px;box-shadow:none}
.crm-dialog-page form[role=form] textarea.form-control{height:auto;min-height:92px}
.crm-dialog-page form[role=form] .form-control:focus{border-color:#2563eb;box-shadow:0 0 0 3px rgba(37,99,235,.1)}
.crm-dialog-page form[role=form] .control-label{padding-top:10px;color:#445066;font-weight:700}
.crm-dialog-page form[role=form] .form-group{position:relative}
.crm-dialog-page form[role=form] .help-block{position:static!important;display:block!important;width:100%!important;margin:6px 0 0!important;padding:0!important;color:#ef4444!important;font-size:13px!important;line-height:1.5!important;text-align:left!important;background:transparent!important;border:0!important;box-shadow:none!important}
.crm-dialog-page form[role=form] .help-block:before{content:'';display:none!important}
.crm-dialog-page form[role=form] .msg-box{position:static!important;display:block!important;width:100%!important;height:auto!important;margin:0!important;line-height:normal!important;white-space:normal!important}
.crm-dialog-page form[role=form] .msg-box.n-right,.crm-dialog-page form[role=form] .msg-box.n-left,.crm-dialog-page form[role=form] .msg-box.n-top,.crm-dialog-page form[role=form] .msg-box.n-bottom{display:block!important;margin:0!important;vertical-align:top!important}
.crm-dialog-page form[role=form] .msg-box .msg-wrap{position:static!important;display:block!important;width:100%!important;margin:5px 0 0!important;padding:0!important;white-space:normal!important;line-height:1.5!important;background:transparent!important;border:0!important;box-shadow:none!important}
.crm-dialog-page form[role=form] .msg-box .n-error,.crm-dialog-page form[role=form] .msg-box .n-tip,.crm-dialog-page form[role=form] .msg-box .n-ok{padding:0!important}
.crm-dialog-page form[role=form] .msg-box .n-arrow{display:none!important}
.crm-dialog-page form[role=form] .msg-box .n-icon{vertical-align:-3px!important}
.crm-dialog-page form[role=form] .msg-box .n-msg{margin-left:2px!important;color:#ef4444!important;font-size:13px!important;line-height:1.5!important;white-space:normal!important}
.crm-dialog-page form[role=form] .has-error .form-control{border-color:#f87171!important}
.crm-dialog-page form[role=form] .has-error .help-block{display:block!important}
.crm-dialog-page .crm-member-options{display:flex;align-items:center;gap:10px 18px;flex-wrap:wrap;min-height:40px;padding:10px 12px;border:1px solid #dbe3ef;border-radius:9px;background:#f8fafc}.crm-dialog-page .crm-member-options .checkbox-inline{margin:0;padding-left:20px;color:#334155}
.crm-dialog-page .layer-footer{position:fixed;right:0;bottom:0;left:0;z-index:20;display:block!important;margin:0;padding:13px 22px;border-top:1px solid #e6ebf2;background:#fff;box-shadow:0 -8px 24px rgba(15,23,42,.05);text-align:right}
.crm-dialog-page .layer-footer .control-label{display:none}
.crm-dialog-page .layer-footer>div{float:none;width:100%;margin:0}
.crm-dialog-page .layer-footer .btn{min-width:96px;height:36px;border:0;border-radius:9px}
.crm-dialog-page .layer-footer .btn-primary{background:linear-gradient(135deg,#2563eb,#0ea5e9)}
.crm-list-page .panel-intro>.panel-heading{display:flex;align-items:center;justify-content:space-between;min-height:66px;padding:15px 20px}
.crm-list-page .panel-intro>.panel-heading h3{margin:0;font-size:18px}
.crm-list-page .panel-intro>.panel-heading p{margin:5px 0 0;color:#748094}
.crm-list-page .toolbar{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:14px;padding:11px;background:#f8fafc;border:1px solid #edf1f7;border-radius:12px}
.crm-list-page .toolbar .btn{height:32px;padding:0 11px;border-radius:8px;font-size:12px;line-height:30px}
.crm-list-page .fixed-table-container{border-color:#e6ebf2;border-radius:12px}
.crm-list-page .table>thead>tr>th{background:#f8fafc;color:#536074}
.crm-list-page .fixed-table-body{overflow-x:auto}
.crm-list-page .table{width:max-content!important;min-width:100%;table-layout:auto}
.crm-list-page .table>thead>tr>th,.crm-list-page .table>tbody>tr>td{white-space:nowrap}
.crm-list-page .table>tbody>tr>td{vertical-align:middle}
.crm-list-page .table .btn{margin:2px 3px 2px 0;border-radius:7px}
.crm-project-filters{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px;padding:12px 14px;border:1px solid #edf1f7;border-radius:12px;background:#f8fafc}
.crm-project-filters .form-control{width:180px;height:38px;border-color:#dfe6ef;border-radius:9px;box-shadow:none}
.crm-project-filters input[type=date]{padding-right:9px;color:#475569;cursor:pointer}.crm-project-filters input[type=date]::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.85}
.crm-project-filters [name=project_keyword]{width:240px}
.crm-project-filters .btn{height:36px;border-radius:8px}
.crm-list-page .commonsearch-table{margin:0 0 14px;padding:10px 12px;border:1px solid #edf1f7;border-radius:12px;background:#f8fafc}
.crm-list-page .commonsearch-table form{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}
.crm-list-page .commonsearch-table .row{display:flex;align-items:flex-end;gap:10px;flex:1;flex-wrap:wrap;margin:0}
.crm-list-page .commonsearch-table .form-group{width:auto;min-width:190px;margin:0;padding:0}
.crm-list-page .commonsearch-table .form-group:nth-last-child(2){margin-left:auto}
.crm-list-page .commonsearch-table .control-label{display:none}
.crm-list-page .commonsearch-table .form-control{height:38px;border-color:#dfe6ef;border-radius:9px;box-shadow:none}
.crm-list-page .commonsearch-table .form-group[data-field="name"]{min-width:240px}
.crm-list-page .commonsearch-table .form-group[data-field="planned_delivery_date"]{min-width:280px}
.crm-list-page .commonsearch-table .form-group[data-field="operate"],.crm-list-page .commonsearch-table .form-group[data-field="project_no"],.crm-list-page .commonsearch-table .form-group[data-field="customer.name"],.crm-list-page .commonsearch-table .form-group[data-field="members_text"],.crm-list-page .commonsearch-table .form-group[data-field="duration_days"],.crm-list-page .commonsearch-table .form-group[data-field="ui_confirm_date"],.crm-list-page .commonsearch-table .form-group[data-field="remaining_days"],.crm-list-page .commonsearch-table .form-group[data-field="progress"]{display:none}
.crm-list-page .crm-progress{min-width:112px}
.crm-list-page .label{display:inline-block;padding:5px 9px;border-radius:999px;font-size:12px}
.crm-detail-dialog{padding:18px 20px 78px;background:#f3f6fb}
.crm-detail-dialog .crm-detail-head{margin-bottom:16px;padding:22px 24px;border:1px solid #dbeafe;border-radius:18px;background:linear-gradient(135deg,#fff 0,#eff6ff 72%,#ecfeff 100%);box-shadow:0 14px 34px rgba(15,23,42,.07)}
.crm-detail-dialog .crm-detail-head h2{margin:0 0 8px;color:#172033;font-size:24px}
.crm-detail-dialog .crm-detail-head p{color:#64748b}
.crm-detail-dialog .crm-project-hero{padding:22px 24px}.crm-detail-dialog .crm-project-summary{margin-bottom:16px}.crm-detail-dialog .crm-project-tabs{padding:0}.crm-detail-dialog .crm-project-tabs .tab-content{padding:18px}.crm-detail-dialog .crm-project-tabs .crm-readonly{min-height:40px}.crm-detail-dialog .crm-project-tabs .form-control{height:40px;border-color:#dbe3ef;border-radius:9px;box-shadow:none}.crm-detail-dialog .crm-project-tabs textarea.form-control{height:auto}.crm-detail-dialog .crm-project-tabs .form-control:focus{border-color:#2563eb;box-shadow:0 0 0 3px rgba(37,99,235,.1)}
.crm-detail-dialog .crm-tabs,.crm-detail-dialog .crm-panel{border:1px solid #e6ebf2;border-radius:16px;background:#fff;box-shadow:0 10px 28px rgba(15,23,42,.06);overflow:hidden}
.crm-detail-dialog .crm-tabs .nav-tabs{padding:0 18px;background:#fff}
.crm-detail-dialog .crm-tabs .nav-tabs>li>a{padding:14px 10px;border:0;border-bottom:2px solid transparent;color:#697386}
.crm-detail-dialog .crm-tabs .nav-tabs>li.active>a{border-bottom-color:#2563eb;color:#2563eb;font-weight:800}
.crm-detail-dialog .crm-tabs .tab-content{padding:20px}
.crm-detail-dialog .crm-readonly{min-height:40px;padding:10px 12px;border:1px solid #edf1f7;border-radius:9px;background:#f8fafc;color:#475569}
.crm-detail-dialog .layer-footer{display:flex;align-items:center;justify-content:flex-end;gap:8px}
.crm-report-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.crm-report-actions .crm-report-filter{display:inline-flex;align-items:center;gap:8px;margin:0}
.crm-report-actions .form-control{min-width:125px;height:34px;border-radius:8px}
.crm-tab-action{margin-bottom:12px}
@media print{.crm-page-head button,.crm-page-head .crm-report-filter,.layer-footer{display:none!important}body{background:#fff!important}.crm-panel,.crm-detail-head,.crm-tabs{box-shadow:none!important}}
.crm-setting-tabs{display:flex;align-items:center;gap:6px;margin:0 0 16px;padding:8px 12px;border:1px solid #e6ebf2;border-radius:14px;background:#fff;box-shadow:0 10px 28px rgba(15,23,42,.05);overflow-x:auto}
.crm-setting-tabs a{display:inline-flex;align-items:center;gap:6px;padding:10px 13px;border-radius:9px;color:#64748b;white-space:nowrap}
.crm-setting-tabs a:hover,.crm-setting-tabs a.active{background:#eff6ff;color:#1d4ed8;font-weight:800}
@media(max-width:767px){.crm-dialog-page form[role=form]{grid-template-columns:1fr;padding:16px}.crm-dialog-page form[role=form]>.form-group{grid-column:1/-1}}
@media(max-width:767px){.crm-list-page .commonsearch-table form,.crm-list-page .commonsearch-table .row{display:block}.crm-list-page .commonsearch-table .form-group{width:100%;margin-bottom:8px}.crm-list-page .commonsearch-table .form-group:nth-last-child(2){margin-left:0}.crm-project-filters{display:block}.crm-project-filters .form-control,.crm-project-filters [name=project_keyword]{width:100%;margin-bottom:8px}}
.crm-task-panel .fixed-table-toolbar{display:none}
.crm-task-panel .panel-body{padding-top:22px}
.crm-task-panel .fixed-table-container{border:0;border-radius:0}
.crm-task-panel .table{min-width:1180px}
.crm-task-panel .table>thead>tr>th{padding:14px 12px;border-right:0;background:#f8fafc;color:#536074;font-size:13px}
.crm-task-panel .table>tbody>tr>td{padding:14px 12px;border-right:0;color:#273142;font-size:13px}
.crm-task-panel .table .btn-info{border:0;background:#eef2ff;color:#1f2937}
.crm-task-panel .table .btn-info:hover{background:#dbeafe;color:#1d4ed8}
.crm-task-progress-form{grid-template-columns:repeat(2,minmax(0,1fr))!important;min-height:calc(100vh - 104px)!important}
.crm-task-progress-form>.form-group:nth-child(3),.crm-task-progress-form>.crm-task-attachment-group{grid-column:1/-1}
.crm-task-range-wrap{display:flex;align-items:center;height:40px;padding:0 3px}
.crm-task-range-wrap input[type=range]{width:100%;height:8px;margin:0;padding:0;border:0;border-radius:999px;outline:0;background:linear-gradient(90deg,#2563eb 0,#0ea5e9 var(--task-progress),#dbe4f0 var(--task-progress),#dbe4f0 100%);box-shadow:inset 0 1px 2px rgba(15,23,42,.1);cursor:pointer;-webkit-appearance:none;appearance:none}
.crm-task-range-wrap input[type=range]::-webkit-slider-runnable-track{height:8px;border:0;border-radius:999px;background:transparent}
.crm-task-range-wrap input[type=range]::-webkit-slider-thumb{width:20px;height:20px;margin-top:-6px;border:3px solid #fff;border-radius:50%;background:#1677ff;box-shadow:0 2px 8px rgba(37,99,235,.38);cursor:grab;-webkit-appearance:none;appearance:none}
.crm-task-range-wrap input[type=range]:active::-webkit-slider-thumb{cursor:grabbing;transform:scale(1.08)}
.crm-task-range-wrap input[type=range]::-moz-range-track{height:8px;border:0;border-radius:999px;background:#dbe4f0}
.crm-task-range-wrap input[type=range]::-moz-range-progress{height:8px;border-radius:999px;background:linear-gradient(90deg,#2563eb,#0ea5e9)}
.crm-task-range-wrap input[type=range]::-moz-range-thumb{width:16px;height:16px;border:3px solid #fff;border-radius:50%;background:#1677ff;box-shadow:0 2px 8px rgba(37,99,235,.38);cursor:grab}
.crm-task-progress-form .help-block{margin:7px 0 0!important;color:#94a3b8!important;font-size:12px!important}
.crm-task-file-input{display:none!important}
.crm-task-attachment-list{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}
.crm-task-attachment-item{display:flex;flex-direction:column;align-items:center;justify-content:center;width:112px;min-height:92px;padding:12px 8px;border:1px solid #e2e8f0;border-radius:10px;background:#f8fafc;color:#475569;text-align:center;transition:.15s ease}
.crm-task-attachment-item:hover{border-color:#93c5fd;background:#eff6ff;color:#1d4ed8;box-shadow:0 7px 18px rgba(37,99,235,.1)}
.crm-task-attachment-item .fa{font-size:34px;color:#64748b}
.crm-task-attachment-item span{display:block;width:100%;margin-top:8px;overflow:hidden;color:inherit;font-size:12px;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}
.crm-task-attachment-empty{display:none;margin-top:10px;padding:13px;border:1px dashed #cbd5e1;border-radius:9px;background:#f8fafc;color:#94a3b8;font-size:13px;text-align:center}
