/* Python service: scoped content components. */
.outsourcing-python .py-service-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}
.outsourcing-python .py-service-card{position:relative;overflow:hidden;padding:26px;min-width:0;transition:border-color .2s,box-shadow .2s}
.outsourcing-python .py-service-card:hover{border-color:#a6bdf9;box-shadow:0 12px 34px #244dc411}
.outsourcing-python .py-service-card img{display:block;width:120px;height:92px;object-fit:contain;margin-bottom:20px}
.outsourcing-python .py-service-card .eyebrow{display:block;font-size:10px;letter-spacing:.08em;margin-bottom:10px}
.outsourcing-python .py-service-card h3{font-size:20px;line-height:1.3;margin-bottom:12px;letter-spacing:-.025em}
.outsourcing-python .py-service-card p{font-size:14px;line-height:1.75}
.outsourcing-python .py-fit-layout{display:grid;grid-template-columns:1fr 1fr;gap:36px;align-items:stretch}
.outsourcing-python .py-fit-visual{position:relative;min-width:0;min-height:360px;border-radius:18px;overflow:hidden;background:#e8f0ff}
.outsourcing-python .py-fit-visual img{display:block;position:absolute;width:100%;height:100%;object-fit:cover}
.outsourcing-python .py-fit-visual span{position:absolute;bottom:20px;left:20px;right:20px;border:1px solid #ffffffb0;border-radius:12px;background:#ffffffe6;padding:15px 18px;color:#183a71;font-size:14px;font-weight:750}
.outsourcing-python .py-fit-copy h3{font-size:20px;margin-bottom:12px;line-height:1.35}
.outsourcing-python .py-fit-copy p{font-size:15px;line-height:1.8;margin-bottom:24px}
.outsourcing-python .py-fit-copy details{background:#fff;border:1px solid #d8e4ff;border-radius:12px;padding:18px 20px}
.outsourcing-python .py-fit-copy summary{cursor:pointer;font-size:14px;font-weight:750;line-height:1.5}
.outsourcing-python .py-fit-copy details p{margin:14px 0 0;font-size:14px}
.outsourcing-python .py-deliverables{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px}
.outsourcing-python .py-deliverables article{min-width:0}
.outsourcing-python .py-deliverables h3{font-size:18px;margin:16px 0 12px}
.outsourcing-python .py-deliverables p{font-size:14px;line-height:1.75}
.outsourcing-python .py-deliverable-icon{display:grid;place-items:center;width:48px;height:48px;background:white;color:var(--blue);border:1px solid #d8e4ff;border-radius:14px}
.outsourcing-python .py-tech-tabs{display:flex;gap:10px;flex-wrap:wrap;margin:24px 0 18px}
.outsourcing-python .py-tech-tabs button{padding:12px 24px;background:#f5f8ff;color:#3e5d93;border:1px solid #d9e4ff;border-radius:10px;font-weight:750;font-size:14px;transition:background .2s}
.outsourcing-python .py-tech-tabs button[aria-selected=true]{background:var(--blue);border-color:var(--blue);color:white}
.outsourcing-python .py-tech-tabs button:hover{box-shadow:0 4px 16px #2e5bff15}
.outsourcing-python .py-tech-panels{padding:30px;border:1px solid #d9e5ff;border-radius:18px;background:linear-gradient(120deg,#f1f6ff,#fff)}
.outsourcing-python .py-tech-panels article:not([hidden]){display:grid;grid-template-columns:1.3fr 1fr;gap:35px;align-items:center}
.outsourcing-python .py-tech-panels h3{font-size:24px;line-height:1.35;margin-bottom:14px}
.outsourcing-python .py-tech-panels p{font-size:15px;line-height:1.75}
.outsourcing-python .py-checklist{list-style:none;margin:0;padding:0;display:grid;gap:14px;font-size:14px}
.outsourcing-python .py-checklist li{display:flex;gap:12px;align-items:flex-start}
.outsourcing-python .py-checklist li:before{content:'✓';display:grid;place-items:center;width:23px;height:23px;border-radius:50%;background:#e0f4ed;color:#208b75;flex-shrink:0}
.outsourcing-python .py-tools-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin-top:28px}
.outsourcing-python .py-tools-grid article{padding-left:18px;border-left:2px solid #d5e1ff}
.outsourcing-python .py-tools-grid h3{font-size:17px;margin-bottom:10px}
.outsourcing-python .py-tools-grid p{font-size:14px;line-height:1.7}
.outsourcing-python .py-tools-grid span{display:block;font-size:12px;color:#4169b3;margin-top:12px;line-height:1.7}
.outsourcing-python .py-intake{display:grid;grid-template-columns:1.15fr 1fr;gap:48px;align-items:center}
.outsourcing-python .py-intake h3{font-size:26px;line-height:1.35;margin-bottom:16px}
.outsourcing-python .py-intake p{font-size:15px;line-height:1.8}
.outsourcing-python .py-note{margin:20px 0 24px;padding:18px 20px;background:#fff;border-left:3px solid var(--blue);border-radius:0 10px 10px 0}
.outsourcing-python .py-note strong{display:block;font-size:14px;margin-bottom:6px}
.outsourcing-python .py-note p{font-size:14px}
.outsourcing-python .py-intake-list{counter-reset:intake;list-style:none;margin:0;padding:0;display:grid;gap:18px}
.outsourcing-python .py-intake-list li{counter-increment:intake;display:grid;grid-template-columns:42px 1fr;column-gap:16px;padding:22px;background:#fff;border:1px solid #d9e5ff;border-radius:14px}
.outsourcing-python .py-intake-list li:before{content:'0' counter(intake);grid-row:span 2;display:grid;place-items:center;align-self:start;width:42px;height:42px;background:#eaf1ff;color:var(--blue);border-radius:12px;font-size:14px;font-weight:800}
.outsourcing-python .py-intake-list b{font-size:16px;line-height:1.4;margin-bottom:7px}
.outsourcing-python .py-intake-list span{color:var(--muted);font-size:13px;line-height:1.7}
.outsourcing-python .py-estimate-intro{display:grid;grid-template-columns:1fr 1fr;gap:30px;align-items:center;margin-bottom:28px}
.outsourcing-python .py-estimate-intro p{font-size:15px;line-height:1.8}
.outsourcing-python .py-estimate-formula{display:flex;gap:10px;align-items:center;justify-content:center;flex-wrap:wrap;padding:20px;background:#edf3ff;border-radius:14px;font-size:12px}
.outsourcing-python .py-estimate-formula strong{padding:10px 14px;color:white;background:var(--blue);border-radius:8px}
.outsourcing-python .py-estimate-formula b{color:#8a9dc3;font-size:18px}
.outsourcing-python .py-estimate-table{overflow-x:auto;border:1px solid #dce6fa;border-radius:12px}
.outsourcing-python .py-estimate-table table{width:100%;border-collapse:collapse;text-align:left;font-size:14px}
.outsourcing-python .py-estimate-table caption{text-align:left;padding:18px 20px;background:#f8faff;color:#1b3056;font-weight:750;font-size:15px}
.outsourcing-python .py-estimate-table th,.outsourcing-python .py-estimate-table td{padding:17px 20px;border-bottom:1px solid #e6edfa;vertical-align:top;line-height:1.6}
.outsourcing-python .py-estimate-table thead th{font-size:12px;background:#f0f5ff;color:#526a92}
.outsourcing-python .py-estimate-table tbody th{width:24%;font-size:14px;color:#273e66}
.outsourcing-python .py-estimate-table td{color:#627798}
.outsourcing-python .py-estimate-table tr:last-child>*{border-bottom:0}
.outsourcing-python .py-cost-next{display:flex;align-items:center;gap:35px;justify-content:space-between;margin-top:25px}
.outsourcing-python .py-cost-next>div{max-width:750px}
.outsourcing-python .py-cost-next h3{margin-bottom:12px;font-size:18px}
.outsourcing-python .py-cost-next p{font-size:14px;line-height:1.75}
.outsourcing-python .py-cost-next small{display:block;margin-top:12px;color:#7588a7;font-size:12px;line-height:1.7}
.outsourcing-python .py-cost-next .button{flex-shrink:0}
.outsourcing-python .py-release-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.outsourcing-python .py-release-grid .card{padding:22px}
.outsourcing-python .py-release-index{display:block;color:var(--blue);font-size:14px;font-weight:800;margin-bottom:18px}
.outsourcing-python .py-release-grid h3{font-size:17px;line-height:1.4}
.outsourcing-python .py-release-grid p{font-size:14px;line-height:1.75}
.outsourcing-python .py-handover{display:grid;grid-template-columns:1fr 2.5fr;gap:30px;margin-top:28px;padding-top:28px;border-top:1px solid #d6e3fb}
.outsourcing-python .py-handover h3{font-size:19px;line-height:1.45}
.outsourcing-python .py-handover p{font-size:14px;line-height:1.8}
.outsourcing-python .py-more-skills{margin-top:12px}
.outsourcing-python .py-more-skills summary{font-size:12px;color:var(--blue);cursor:pointer;line-height:1.6}
.outsourcing-python .py-more-skills .tags{margin-top:12px}
.outsourcing-python .outsourcing-profile-head h3{font-size:16px}
.outsourcing-python .outsourcing-profile-head p{font-size:13px}
.outsourcing-python .outsourcing-profile-grid{align-items:start;grid-template-columns:repeat(3,minmax(0,1fr))}
.outsourcing-python .outsourcing-profile{min-width:0}
.outsourcing-python .tags span{overflow-wrap:anywhere}
.outsourcing-python .py-case-focus{font-size:11px;font-weight:700;color:var(--blue);margin-bottom:8px}
.outsourcing-python #cases .carousel-case-result strong{font-size:15px}
.outsourcing-python .hub-process-track{margin-top:32px}
@media(max-width:1050px){.outsourcing-python .py-service-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.outsourcing-python .py-deliverables,.outsourcing-python .py-release-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.outsourcing-python .py-intake{gap:25px}.outsourcing-python .outsourcing-profile-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.outsourcing-python .py-fit-layout,.outsourcing-python .py-intake,.outsourcing-python .py-tech-panels article:not([hidden]),.outsourcing-python .py-estimate-intro,.outsourcing-python .py-handover{grid-template-columns:1fr;gap:24px}.outsourcing-python .py-fit-visual{min-height:280px}.outsourcing-python .py-tools-grid{grid-template-columns:1fr;gap:24px}.outsourcing-python .py-tech-panels{padding:24px}.outsourcing-python .py-cost-next{flex-direction:column;align-items:flex-start}.outsourcing-python .py-estimate-table table{min-width:650px}}
@media(max-width:520px){.outsourcing-python .py-service-grid,.outsourcing-python .py-deliverables,.outsourcing-python .py-release-grid,.outsourcing-python .outsourcing-profile-grid{grid-template-columns:1fr}.outsourcing-python .py-service-card{padding:22px}.outsourcing-python .py-service-card img{float:right;width:84px;height:68px;margin:0 0 15px 12px}.outsourcing-python .py-service-card h3{font-size:19px;min-height:50px}.outsourcing-python .py-service-card p{clear:both}.outsourcing-python .py-deliverables{gap:26px}.outsourcing-python .py-fit-copy h3,.outsourcing-python .py-tech-panels h3{font-size:21px}.outsourcing-python .py-intake h3{font-size:23px}.outsourcing-python .py-tech-tabs{gap:8px}.outsourcing-python .py-tech-tabs button{padding:11px 16px;font-size:12px}.outsourcing-python .py-tech-panels{padding:20px}.outsourcing-python .py-intake-list li{padding:18px;column-gap:12px}.outsourcing-python .py-estimate-formula{padding:16px;gap:8px}.outsourcing-python .py-cost-next .button{width:100%}}
@media(prefers-reduced-motion:reduce){.outsourcing-python .py-service-card,.outsourcing-python .py-tech-tabs button{transition:none}}

@media(max-width:760px){
  .outsourcing-python .py-estimate-table table{display:block;min-width:0}
  .outsourcing-python .py-estimate-table caption{display:block;width:100%}
  .outsourcing-python .py-estimate-table thead{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
  .outsourcing-python .py-estimate-table tbody{display:block}
  .outsourcing-python .py-estimate-table tbody tr{display:block;padding:20px;border-bottom:1px solid #dce6fa}
  .outsourcing-python .py-estimate-table tbody tr:last-child{border-bottom:0}
  .outsourcing-python .py-estimate-table tbody th{display:block;width:100%;padding:0 0 14px;border:0;font-size:16px}
  .outsourcing-python .py-estimate-table td{display:block;padding:0;border:0}
  .outsourcing-python .py-estimate-table td+td{margin-top:14px}
  .outsourcing-python .py-estimate-table td:before{content:attr(data-label);display:block;margin-bottom:4px;color:#273e66;font-size:12px;font-weight:700}
}
