/* v16.07 contractor how-to player (orange). Reuses hw-dots / hw-cap / hw-ctl from style.css */
.ctviz{align-self:center;min-width:0;width:100%}
.ch{--o:#fb923c;--o2:#f97316;display:grid;gap:12px;width:100%;min-width:0}
.ch>*{min-width:0}
.ch-top{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.ch-top .tag{color:var(--o);margin:0}
.ch .hw-dots button{width:28px}
.ch .hw-dots button.on{background:linear-gradient(90deg,#fdba74,#f97316)}.ch .hw-dots button.done{background:#fb923c66}
.ch .hw-n{font-size:44px;background:linear-gradient(180deg,#fdba74,#f97316);-webkit-background-clip:text;background-clip:text;color:transparent}
.ch .hw-cap{min-height:0}.ch .hw-cap h3{font-size:clamp(16px,2vw,21px)}.ch .hw-cap p{font-size:14px}
.ch .hw-bar i{background:linear-gradient(90deg,#f97316,#fdba74)}.ch .hw-b:hover{border-color:var(--o)}
.ch .hw-b.ch-replay,.ch .hw-b.ch-play{display:inline-grid;place-items:center;padding:0}
.ch-stage{position:relative;width:100%;aspect-ratio:16/9;border-radius:20px;border:1px solid #fb923c33;overflow:hidden;background:radial-gradient(circle at 50% 55%,#1b130b,#070a10 75%);box-shadow:0 30px 70px -40px #f9731688}
.ch-in{position:absolute;inset:0;width:640px;height:360px;transform:scale(var(--s,1));transform-origin:0 0;font:14px/1.35 system-ui,-apple-system,Segoe UI,sans-serif;color:#e6ebf2}
.ch.paused .ch-in *{animation-play-state:paused!important}
.ch-in *{animation-fill-mode:both}
.ch-in.still *{animation:none!important;opacity:1!important;transform:none!important}
.ch-in.still .ch-cur{display:none}
/* shared */
.ch-card{position:absolute;background:#0d121cf2;border:1px solid #ffffff1a;border-radius:16px;box-shadow:0 18px 40px -20px #000;padding:18px}
.ch-av{width:46px;height:46px;border-radius:12px;display:grid;place-items:center;background:#fb923c22;border:1px solid #fb923c66;font-size:22px;flex:none}
.ch-av.sm{width:32px;height:32px;font-size:16px;border-radius:9px}
.ch-btn{margin-top:14px;border:0;border-radius:10px;padding:10px 18px;font:700 14px system-ui;color:#fff;background:linear-gradient(180deg,#fb923c,#ea580c);box-shadow:0 8px 20px -8px #f97316}
.ch-click{animation:chpress .35s 2.5s}
.ch-cur{position:absolute;width:18px;height:18px;z-index:5;left:20%;top:80%}
.ch-cur:before{content:"";position:absolute;inset:0;background:#fff;clip-path:polygon(0 0,0 100%,30% 72%,52% 100%,66% 92%,46% 66%,82% 66%);filter:drop-shadow(0 2px 4px #000)}
.ch-ex{position:absolute;right:10px;bottom:-22px;font-style:normal;font-size:11px;color:#8b95a7}
/* 1 profile */
.ch-prof{left:120px;top:38px;width:400px;animation:chup .5s .1s}
.ch-ph{display:flex;gap:12px;align-items:center}.ch-ph small{display:block;color:#8b95a7}
.ch-type{display:inline-block;overflow:hidden;white-space:nowrap;border-right:2px solid var(--o);animation:chtype 1.2s steps(26) .3s,chcar .5s 1.5s forwards;max-width:100%}
.ch-lbl{margin:16px 0 8px;font-size:12px;color:#8b95a7;text-transform:uppercase;letter-spacing:.06em}
.ch-tags{display:flex;flex-wrap:wrap;gap:8px}.ch-tags span{padding:6px 12px;border-radius:99px;border:1px solid #fb923c66;background:#fb923c1a;color:#fed7aa;font-weight:600;font-size:13px;animation:chpop .35s cubic-bezier(.3,1.6,.5,1)}
.ch-tags .t1{animation-delay:1.3s}.ch-tags .t2{animation-delay:1.5s}.ch-tags .t3{animation-delay:1.7s}.ch-tags .t4{animation-delay:1.9s}.ch-tags .t5{animation-delay:2.1s}
.cs1 .ch-cur{animation:chcur1 2.6s ease-in-out .2s}
/* map */
.ch-mapw{position:absolute;inset:0}
.ch-map{position:absolute;inset:0;width:100%;height:100%}
.ch-st{fill:#ffffff08;stroke:#ffffff2a;stroke-width:1.4}
.ch-z{position:absolute;width:120px;height:120px;margin:-60px 0 0 -60px;border-radius:50%;border:2px solid var(--o);background:#fb923c22;box-shadow:0 0 22px #f9731655;animation:chzone .7s cubic-bezier(.3,1.5,.5,1)}
.ch-z.z2{width:96px;height:96px;margin:-48px 0 0 -48px}.ch-z.z3{width:84px;height:84px;margin:-42px 0 0 -42px}
.cs2 .z1{animation-delay:.9s}.cs2 .z2{animation-delay:1.8s}.cs2 .z3{animation-delay:2.7s}
.cs3 .ch-z,.cs4 .ch-z{animation:none}
.ch-hint{position:absolute;left:50%;top:16px;transform:translateX(-50%);padding:6px 14px;border-radius:99px;background:#0d121ce6;border:1px solid #fb923c55;color:#fed7aa;font-size:12px;font-weight:600}
.cs2 .ch-cur{animation:chcur2 3s ease-in-out .2s}
/* 3 jobs */
.ch-dim .ch-map,.ch-dim .ch-z{opacity:.55}
.ch-jp{position:absolute;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;background:#fff;border:3px solid var(--o2);box-shadow:0 0 0 0 #f97316aa;animation:chpin .5s cubic-bezier(.3,1.6,.5,1),chlaser 1.4s ease-out}
.ch-jp.j1{animation-delay:.5s,.5s}.ch-jp.j2{animation-delay:1.1s,1.1s}.ch-jp.j3{animation-delay:1.7s,1.7s}.ch-jp.j4{animation-delay:2.3s,2.3s}
.ch-jobs{position:absolute;right:22px;top:30px;width:250px;display:grid;gap:10px}
.ch-job{display:flex;gap:10px;align-items:center;background:#0d121cf2;border:1px solid #ffffff1a;border-left:3px solid var(--o);border-radius:12px;padding:8px;animation:chslide .45s cubic-bezier(.3,1.3,.5,1)}
.ch-job b{display:block;font-size:13px}.ch-job small{color:#8b95a7;font-size:12px}
.ch-job.b1{animation-delay:.4s}.ch-job.b2{animation-delay:1s}.ch-job.b3{animation-delay:1.6s}
.ch-img{width:52px;height:40px;border-radius:8px;flex:none}
.ch-img.i1{background:linear-gradient(160deg,#4d7c0f,#713f12 70%)}.ch-img.i2{background:linear-gradient(160deg,#78716c,#3f3f46)}.ch-img.i3{background:linear-gradient(160deg,#a8a29e,#57534e 60%,#365314)}
/* 4 buyers */
.ch-by{position:absolute;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:#555;opacity:.35;animation:chlit .5s forwards}
.ch-by.r1{--c:#ef4444;animation-delay:.6s}.ch-by.r2{--c:#38bdf8;animation-delay:1s}.ch-by.r3{--c:#eab308;animation-delay:1.4s}.ch-by.r4{--c:#ef4444;animation-delay:1.8s}.ch-by.r5{--c:#38bdf8;animation-delay:2.2s}
.ch-leg{position:absolute;left:14px;bottom:12px;display:flex;gap:12px;font-size:12px;color:#c9d1dc;background:#0d121ce6;padding:6px 10px;border-radius:10px;border:1px solid #ffffff14}
.ch-leg i{display:inline-block;width:9px;height:9px;border-radius:50%;background:var(--c);margin-right:5px}
.ch-pop{position:absolute;left:41%;top:12px;background:#0d121cf5;border:1px solid #fb923c66;border-radius:12px;padding:8px 12px;animation:chup .45s 2.6s}
.ch-pop small{display:block;color:#8b95a7;font-size:12px}
/* 5 chat */
.ch-chat{position:absolute;left:130px;top:24px;width:380px;height:312px;background:#0b0f17f5;border:1px solid #ffffff1a;border-radius:16px;padding:12px 14px;display:flex;flex-direction:column;gap:9px;animation:chup .45s .1s}
.ch-ch{display:flex;align-items:center;gap:10px;padding-bottom:8px;border-bottom:1px solid #ffffff12}.ch-ch b{flex:1;font-size:14px}
.ch-call{border:0;border-radius:99px;padding:6px 12px;font:700 12px system-ui;color:#fff;background:#16a34a}
.ch-call.ch-click{animation:chpress .35s 3s}
.ch-msg{max-width:78%;padding:8px 12px;border-radius:14px 14px 14px 4px;background:#1a2230;font-size:13px;animation:chup .4s}
.ch-msg small{display:block;color:#fdba74;font-size:11px;font-weight:600}
.ch-msg.me{align-self:flex-end;background:linear-gradient(180deg,#fb923c,#ea580c);color:#fff;border-radius:14px 14px 4px 14px}
.ch-msg.m1{animation-delay:.5s}.ch-msg.m2{animation-delay:1.4s}.ch-msg.m3{animation-delay:2.2s}
.ch-ring{align-self:center;margin-top:auto;padding:7px 16px;border-radius:99px;background:#16a34a22;border:1px solid #16a34a88;color:#bbf7d0;font-weight:700;font-size:13px;animation:chup .4s 2.9s,chpulse 1s 3.3s infinite}
@keyframes chup{from{opacity:0;transform:translateY(12px)}}
@keyframes chpop{from{opacity:0;transform:scale(.4)}}
@keyframes chslide{from{opacity:0;transform:translateX(30px)}}
@keyframes chtype{from{max-width:0}}
@keyframes chcar{to{border-color:transparent}}
@keyframes chpress{50%{transform:scale(.92);filter:brightness(1.3)}}
@keyframes chzone{from{opacity:0;transform:scale(0)}}
@keyframes chpin{from{opacity:0;transform:translateY(-30px) scale(.4)}}
@keyframes chlaser{0%{box-shadow:0 0 0 0 #f97316cc}100%{box-shadow:0 0 0 26px #f9731600}}
@keyframes chlit{to{opacity:1;background:var(--c);box-shadow:0 0 0 4px color-mix(in srgb,var(--c) 30%,transparent),0 0 14px var(--c)}}
@keyframes chpulse{50%{box-shadow:0 0 0 8px #16a34a22}}
@keyframes chcur1{0%{left:85%;top:95%;opacity:0}15%{opacity:1}80%,100%{left:30%;top:86%}}
@keyframes chcur2{0%{left:80%;top:90%;opacity:0}10%{opacity:1}28%{left:31%;top:48%}55%{left:53%;top:62%}85%,100%{left:65%;top:40%}}
@media(prefers-reduced-motion:reduce){.ch-in *{animation:none!important}}
@media(max-width:860px){.ch .hw-n{font-size:34px}.ch .hw-cap h3{font-size:16px}#contractors .ctviz{margin-top:8px}}
/* v16.40 longer contractor headline: balanced wrapping */
#contractors h2{text-wrap:balance;overflow-wrap:break-word;hyphens:manual}
