.causes{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-wrap:wrap;justify-content:center;gap:10px}
.causes li{padding:10px 14px;border-radius:12px;background:var(--deep2);color:#C9E3DA;font-size:14px}
.causes b{display:block;color:#fff;font-size:15px}

.repair-grid{display:flex;flex-wrap:wrap;gap:24px;padding-top:36px;padding-bottom:48px;align-items:flex-start}
.patient{flex:999 1 420px;min-width:0;display:flex;flex-direction:column;align-items:center;gap:14px;padding:36px 20px;border-radius:24px;background:#fff;border:1px solid var(--line)}
.file-card{position:relative;width:min(240px,60vw);display:grid;place-items:center}
.file-card .doc{width:120px;height:150px;filter:drop-shadow(0 12px 24px rgba(14,59,51,.15))}
.file-card .pulse{position:absolute;left:0;right:0;top:50%;width:100%;height:46px;transform:translateY(-50%);overflow:visible}
.file-card .pulse path{fill:none;stroke:#B8C8BE;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:240;stroke-dashoffset:0}
.file-card.working .pulse path{stroke:#0E6B5C;animation:beat 1.4s linear infinite}
@keyframes beat{from{stroke-dashoffset:480}to{stroke-dashoffset:0}}
.file-line{margin:0;font-size:15px;font-weight:600;text-align:center;overflow-wrap:anywhere}
.before{margin:0;min-height:22px;font-size:14px;color:var(--muted);text-align:center}

.panel .bar{height:10px;border-radius:99px;background:#1E5A4E;overflow:hidden}
.panel .bar span{display:block;height:100%;width:0;border-radius:inherit;background:linear-gradient(90deg,#3BE0A8,#C2FBE6,#3BE0A8);background-size:200% 100%;animation:shine 1.4s linear infinite;transition:width .4s ease}
@keyframes shine{from{background-position:200% 0}to{background-position:0 0}}
.steps{list-style:none;margin:0;padding:0;display:grid;gap:9px}
.steps li{display:flex;align-items:center;gap:10px;font-size:15px;font-weight:600;color:#86A89D}
.steps i{width:20px;height:20px;border-radius:50%;border:2px solid #3D7A6C;flex:none;box-sizing:border-box;display:grid;place-items:center}
.steps li.now{color:#fff}.steps li.now i{border-color:#2B6A5C;border-top-color:var(--mint);animation:spin .8s linear infinite}
.steps li.done{color:var(--mint)}.steps li.done i{border-color:var(--mint);background:var(--mint)}
.steps li.done i::after{content:"";width:5px;height:9px;border:solid #06231C;border-width:0 2px 2px 0;transform:translateY(-1px) rotate(45deg)}
.steps b{color:var(--mint)}
.steps li.stopped{color:#FFD9C7}.steps li.stopped i{border-color:#E9A27A}
@keyframes spin{to{transform:rotate(360deg)}}
.elapsed{margin:0;min-height:18px;font-size:13px;color:#C9E3DA}
.error-box{display:flex;flex-direction:column;gap:6px;padding:14px 16px;border-radius:14px;background:#FFF3EC;border:2px solid #E9A27A;color:#6B2A0A}
.error-box strong{font-size:16px}.error-box p{margin:0;font-size:14px;line-height:1.5}
.panel .row{display:flex;flex-wrap:wrap;gap:8px}

.result.repaired{align-items:flex-start}
.why{margin:0;font-size:15px;line-height:1.55;color:#E7FBF4}
.compare{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;margin:0}
.compare div{padding:12px 14px;border-radius:12px;background:var(--deep2)}
.compare dt{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#A9CFC2}
.compare dd{margin:4px 0 0;font-size:14px;line-height:1.45}
.recovered{flex:1 1 100%;list-style:none;margin:6px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:12px}
.recovered li{position:relative;display:grid;place-items:center;min-height:120px;padding:6px;border-radius:10px;background:#1E5A4E}
.recovered canvas{width:100%;height:auto;border-radius:4px;background:#fff;box-shadow:0 4px 12px rgba(0,0,0,.25)}
.recovered span{position:absolute;top:-8px;left:-8px;width:24px;height:24px;border-radius:50%;background:var(--mint);color:#06231C;font-size:12px;font-weight:800;display:grid;place-items:center}
.recovered li.bad{outline:2px dashed #E9A27A}
.recovered li.more{color:#C9E3DA;font-weight:700;font-size:14px}
@media(max-width:760px){.patient{padding:24px 14px}.recovered{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(prefers-reduced-motion:reduce){.file-card.working .pulse path,.panel .bar span,.steps li.now i{animation:none}}
