.violation-shell{display:grid;gap:16px}.violation-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:16px}.violation-kpi{padding:14px;border:1px solid #dce7e4;border-radius:12px;background:#f8fbfa}.violation-kpi small{display:block;color:#74857d}.violation-kpi b{display:block;margin-top:6px;font-size:24px;color:#234638}.violation-kpi.warn{background:#fff8e9;border-color:#f0ddb1}.violation-kpi.danger{background:#fff2ef;border-color:#efd1c9}.violation-layout{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(360px,.95fr);gap:14px}.violation-box{padding:17px;border:1px solid #dbe5e1;border-radius:13px;background:#fff}.violation-box h3{margin:0;font-size:17px}.violation-box>p{margin:6px 0 14px;color:#718079;font-size:12px}.violation-source{display:grid;gap:10px}.violation-source textarea{min-height:118px;resize:vertical}.violation-source input,.violation-source textarea,.violation-source select,.violation-tools input,.violation-tools select{width:100%;padding:9px 10px;border:1px solid #d6e1dd;border-radius:8px;background:#fff;color:#172f25;font:inherit}.violation-source label,.violation-grid label{display:grid;gap:5px;color:#667b72;font-size:12px}.violation-upload{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:end}.violation-upload button{white-space:nowrap}.violation-ocr-progress{min-height:18px;color:#547469;font-size:12px}.violation-image{position:relative;display:none;max-width:320px;border:1px solid #dce5e2;border-radius:10px;overflow:hidden}.violation-image.show{display:block}.violation-image img{display:block;width:100%;max-height:210px;object-fit:contain;background:#f4f7f6}.violation-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:13px}.violation-grid .wide{grid-column:1/-1}.violation-match{margin-top:12px;padding:12px;border:1px dashed #b8d2c8;border-radius:10px;background:#f4faf7;color:#395d4f;line-height:1.65}.violation-match.none{border-color:#e4c9a4;background:#fff9ed;color:#815a1f}.violation-form-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin-top:14px}.violation-flow{display:grid;gap:9px;margin-top:13px}.violation-flow-step{display:grid;grid-template-columns:28px 1fr;gap:10px;padding:10px;border-radius:10px;background:#f6f9f8}.violation-flow-step>span{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:#317b63;color:#fff;font-weight:800}.violation-flow-step b{display:block}.violation-flow-step small{display:block;margin-top:3px;color:#718078;line-height:1.5}.violation-reminders{margin-top:15px;padding-top:14px;border-top:1px solid #e3ebe8}.violation-reminder{padding:10px 11px;margin-top:7px;border-left:3px solid #df9b34;border-radius:7px;background:#fff8e9}.violation-reminder.overdue{border-color:#c85846;background:#fff1ee}.violation-reminder b{display:block}.violation-reminder small{display:block;margin-top:3px;color:#74675e}.violation-list-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap}.violation-tools{display:flex;gap:8px;flex-wrap:wrap}.violation-tools input{width:230px}.violation-tools select{width:150px}.violation-list{display:grid;gap:10px;margin-top:13px}.violation-card{border:1px solid #dce5e2;border-radius:12px;overflow:hidden;background:#fff}.violation-card.urgent{border-color:#efc674}.violation-card.overdue{border-color:#e4a99e}.violation-card-head{display:flex;justify-content:space-between;gap:12px;padding:14px 15px;background:#f8faf9}.violation-card-head h4{margin:0;font-size:17px}.violation-card-head p{margin:5px 0 0;color:#718078;font-size:12px}.violation-status{align-self:flex-start;padding:5px 9px;border-radius:999px;background:#edf5f2;color:#39715e;font-size:12px;font-weight:700;white-space:nowrap}.violation-status.urgent{background:#fff1d5;color:#9a620d}.violation-status.overdue{background:#ffe9e4;color:#ad3e2e}.violation-status.done{background:#e8f5ed;color:#31704b}.violation-card-body{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:14px;padding:14px 15px}.violation-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}.violation-fact small{display:block;color:#7a8b83}.violation-fact b{display:block;margin-top:3px;word-break:break-word}.violation-order{padding:11px;border-radius:9px;background:#f2f7f5;line-height:1.55}.violation-order small{color:#718078}.violation-timeline{margin:0;padding:0 0 0 19px;color:#52685f;font-size:12px}.violation-timeline li{margin-bottom:7px}.violation-card-actions{display:flex;justify-content:flex-end;gap:7px;flex-wrap:wrap;padding:11px 15px;border-top:1px solid #e7eeeb}.violation-card-actions button{padding:7px 10px}.violation-card-actions .danger{background:#fff;color:#b14937;border:1px solid #dca79d}.violation-empty{padding:28px;text-align:center;color:#718078;border:1px dashed #ccdcd6;border-radius:10px}.violation-local-note{padding:9px 11px;border-radius:8px;background:#eef6ff;color:#45677e;font-size:12px}
.violation-deposit-panel{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:11px 12px;border:1px solid #ead6a7;border-radius:10px;background:#fffaf0}.violation-deposit-panel small{display:block;color:#80652f}.violation-deposit-panel b{display:block;margin-top:2px;color:#5d4519;font-size:16px}.violation-deposit-panel p{margin:3px 0 0;color:#7b6a48;font-size:11px}.violation-deposit-options{display:flex;justify-content:flex-end;gap:6px;flex-wrap:wrap}.violation-deposit-options button{min-width:72px;padding:6px 9px!important;font-size:12px}.violation-deposit-options button.active{border-color:#357d65;background:#357d65;color:#fff}.violation-deposit-options button:disabled:not(.active){border-color:#dfe6e3;background:#f5f7f6;color:#a0aaa6;cursor:not-allowed}
.violation-layout{grid-template-columns:minmax(0,1fr)}.violation-layout:not(.violation-entry-open){display:none}
.violation-appointment-dialog{width:min(460px,100%)}.violation-appointment-dialog>p{margin:0 0 14px;color:#667b72;line-height:1.6}.violation-appointment-label{display:grid;gap:7px;color:#536b61;font-size:12px}.violation-appointment-label input{width:100%;padding:11px;border:1px solid #d6e1dd;border-radius:8px;background:#fff;color:#173027;font:inherit}.violation-appointment-progress{min-height:20px;margin-top:9px;color:#456d5d;font-size:12px}
.violation-handling-dialog{width:min(520px,100%)}.violation-handling-note{margin:0 0 14px;color:#667b72;line-height:1.6}.violation-handling-upload{display:grid;gap:7px;color:#536b61;font-size:12px}.violation-handling-upload input{width:100%;padding:10px;border:1px solid #d6e1dd;border-radius:8px;background:#fff;font:inherit}.violation-handling-upload span{color:#7a8b83}.violation-handling-preview{margin-top:12px;border:1px solid #dbe5e1;border-radius:10px;overflow:hidden;background:#f4f7f6}.violation-handling-preview img{display:block;width:100%;max-height:320px;object-fit:contain}.violation-handling-progress{min-height:20px;margin-top:9px;color:#456d5d;font-size:12px}.violation-handling-proofs{display:flex;gap:7px;flex-wrap:wrap;margin-top:9px}.violation-handling-proof{position:relative;width:92px;height:72px;overflow:hidden;padding:0!important;border:1px solid #cbdcd5!important;border-radius:8px!important;background:#eef4f1!important}.violation-handling-proof img{width:100%;height:100%;object-fit:cover}.violation-handling-proof span{position:absolute;right:3px;bottom:3px;left:3px;padding:2px 3px;border-radius:4px;background:#173d31d9;color:#fff;font-size:10px;text-align:center}.violation-proof-lightbox[hidden]{display:none}.violation-proof-lightbox{position:fixed;inset:0;z-index:99999;display:grid;place-items:center;padding:18px;background:#061018e6}.violation-proof-lightbox img{max-width:min(1000px,96vw);max-height:90vh;border-radius:10px;box-shadow:0 18px 55px #0009}.violation-proof-lightbox button{position:absolute;top:16px;right:16px;width:42px;height:42px;padding:0;border-radius:50%;background:#fff;color:#173027;font-size:25px}
@media(max-width:900px){.violation-layout{grid-template-columns:1fr}.violation-kpis{grid-template-columns:repeat(2,1fr)}}
@media(max-width:650px){#violations>.card{margin:8px -8px 78px;padding:10px;border:0;border-radius:0}.violation-kpis{gap:7px}.violation-kpi{padding:10px}.violation-kpi b{font-size:20px}.violation-grid{grid-template-columns:1fr}.violation-grid .wide{grid-column:auto}.violation-upload{grid-template-columns:1fr}.violation-card-body{grid-template-columns:1fr}.violation-facts{grid-template-columns:repeat(2,1fr)}.violation-tools{width:100%}.violation-tools input,.violation-tools select{width:100%}}

/* 高密度列表：默认只显示摘要，点“处理”再展开完整资料和操作。 */
.violation-completed-toggle{white-space:nowrap}.violation-list{gap:6px}.violation-card{border-radius:9px}.violation-card-head{align-items:stretch;gap:8px;min-height:82px;padding:8px 10px;background:#fff}.violation-card-head-main{min-width:0;flex:1}.violation-card-head h4{overflow:hidden;margin:0;font-size:15px;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.violation-card-head p{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.violation-card-meta{margin:3px 0 0!important;color:#718078;font-size:11px!important}.violation-card-brief{margin:3px 0 0!important;color:#435c51!important;font-size:11px!important}.violation-card-head-side{display:flex;flex:0 0 auto;flex-direction:column;align-items:flex-end;justify-content:space-between;gap:5px}.violation-status{max-width:92px;overflow:hidden;padding:3px 7px;font-size:11px;text-overflow:ellipsis}.violation-card-toggle{min-width:54px;padding:4px 9px!important;font-size:12px;line-height:1.25}.violation-card-body,.violation-card-actions{display:none}.violation-card.expanded .violation-card-body{display:grid;padding:10px 12px}.violation-card.expanded .violation-card-actions{display:flex;padding:8px 12px}.violation-card.expanded .violation-card-actions button{padding:5px 8px;font-size:12px}.violation-card.expanded .violation-facts{gap:8px}.violation-card.expanded .violation-fact{font-size:12px}.violation-card.expanded .violation-order{padding:8px;font-size:12px}.violation-card.expanded .violation-timeline li{margin-bottom:4px}
@media(max-width:650px){.violation-handling-dialog{padding:16px}.violation-handling-preview img{max-height:42vh}.violation-handling-proof{width:84px;height:66px}.violation-completed-toggle{width:100%;min-height:34px}.violation-list{gap:5px;margin-top:9px}.violation-card-head{min-height:78px;padding:7px 8px}.violation-card-head h4{font-size:14px}.violation-card-meta,.violation-card-brief{font-size:10.5px!important}.violation-card-head-side{gap:4px}.violation-status{max-width:70px;padding:2px 6px;font-size:10px}.violation-card-toggle{min-width:46px;min-height:28px;padding:3px 7px!important;font-size:11px}.violation-card.expanded .violation-card-body{padding:9px}.violation-card.expanded .violation-card-actions{justify-content:flex-start;padding:7px 9px}.violation-card.expanded .violation-card-actions button{flex:1 1 auto;min-width:82px}.violation-card.expanded .violation-facts{grid-template-columns:repeat(2,minmax(0,1fr));font-size:11px}.violation-card.expanded .violation-fact b{font-size:11px}}
@media(max-width:650px){.violation-deposit-panel{align-items:stretch;flex-direction:column;gap:8px}.violation-deposit-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.violation-deposit-options button{width:100%;min-height:34px}}
@media(max-width:768px){.mobile-dock{grid-template-columns:repeat(auto-fit,minmax(36px,1fr))!important}.mobile-dock button[data-mobile-tab="violations"]::before{content:'⚠'}}
.violation-today-box{padding:13px 15px}.violation-today-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.violation-today-head h3{margin:0}.violation-today-head p{margin:3px 0 0;color:#718079;font-size:11px}.violation-today-head>b{color:#9a620d;font-size:15px}.violation-today-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:10px}.violation-today-item{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0;padding:9px 10px;border:1px solid #eddbb7;border-radius:9px;background:#fff9ec;color:#263f35;text-align:left}.violation-today-item.overdue{border-color:#e5b5aa;background:#fff2ef}.violation-today-item span{min-width:0}.violation-today-item b,.violation-today-item small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.violation-today-item b{font-size:13px}.violation-today-item small{margin-top:3px;color:#7a6a51;font-size:10px}.violation-today-item em{flex:0 0 auto;color:#317b63;font-size:11px;font-style:normal;font-weight:800}.violation-today-empty{grid-column:1/-1;padding:10px;border-radius:8px;background:#f3f8f6;color:#567067;text-align:center;font-size:12px}@media(max-width:650px){.violation-today-box{padding:10px}.violation-today-list{grid-template-columns:1fr;gap:5px;margin-top:7px}.violation-today-item{min-height:48px;padding:7px 9px}.violation-today-head p{display:none}}
