/* Page polish. Pairs with polish.js; link after scroll-motion.css. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* Scroll-driven route dot */
#atlas .route-dot{transition:opacity .5s ease}

/* Experience ↔ map */
.iso .plate.linked .lift{transform:translateY(-7px)}
.iso .plate.linked .ring{opacity:.6}
.iso .plate.linked .ttl{fill:var(--rust-text)}
.iso .plate.ping .ring{animation:ring-ping .5s ease-in-out 4 alternate}
.iso .plate.ping .lift{transform:translateY(-7px)}
@keyframes ring-ping{from{opacity:.2}to{opacity:1}}
.mcard.ping{animation:card-ping .5s ease-in-out 4 alternate}
@keyframes card-ping{to{box-shadow:0 0 0 3px var(--rust),0 10px 28px #39362e1f}}
.on-map{padding:2px 0;border:0;border-bottom:1px dashed currentColor;background:none;color:var(--rust-text);font:700 var(--t-label)/1.35 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;cursor:pointer}
.on-map:hover,.on-map:focus-visible{border-bottom-style:solid;outline:none}
.on-map:focus-visible{outline:2px solid var(--rust-text);outline-offset:3px}
.experience-list li.linked article{box-shadow:inset 0 3px 0 var(--rust)}

/* Revision cloud + flag on the current role */
.rev-flag{display:flex;align-items:center;gap:5px;margin-top:6px;color:var(--rust-text);font:700 10px/1.2 var(--font-mono);letter-spacing:.1em}
.rev-flag svg{width:15px;height:13px;flex:none}
.rev-flag path{fill:none;stroke:currentColor;stroke-width:1.3;stroke-linejoin:round}
.rev-flag text{fill:currentColor;font:700 7px/1 var(--font-mono);text-anchor:middle}
.rev-cloud{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.rev-cloud path{fill:none;stroke:var(--rust);stroke-width:1.3;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:0;opacity:.75}
.sm-ready .experience-list li:not(.is-shown) .rev-cloud path{stroke-dashoffset:1}
.sm-ready .experience-list li.is-shown .rev-cloud path{animation:cloud-draw 1.6s cubic-bezier(.6,0,.2,1) calc(var(--sm-delay,0ms) + .7s) both}
@keyframes cloud-draw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}

/* Sheet index rail (desktop, in the page gutter) */
.rail{display:none}
@media(min-width:1100px) and (hover:hover){
 .rail{position:fixed;z-index:40;right:4px;top:50%;display:flex;flex-direction:column;gap:12px;transform:translateY(-50%)}
 .rail a{position:relative;display:flex;justify-content:flex-end;align-items:center;width:18px;height:12px;color:var(--ink);text-decoration:none}
 .rail i{display:block;width:8px;height:2px;background:#9c978a;transition:width .3s var(--sm-ease,ease),background .3s}
 .rail a.is-passed i{background:var(--ink)}
 .rail a.is-current i{width:16px;background:var(--rust)}
 .rail span{position:absolute;right:24px;padding:4px 7px;border:1px solid var(--line);background:var(--paper);color:var(--soft);font:var(--t-label)/1 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;opacity:0;transform:translateX(4px);transition:opacity .2s,transform .2s;pointer-events:none}
 .rail span b{color:var(--rust-text)}
 .rail:hover span{opacity:1;transform:none}
 .rail a:hover i{background:var(--rust-text)}
}

/* Title block types in */
.titleblock dd.typing::after{content:"";display:inline-block;width:.55em;height:1em;margin-left:1px;vertical-align:-2px;background:var(--rust);animation:caret .5s steps(1) infinite}
@keyframes caret{50%{opacity:0}}

/* Drafting crosshair over the map */
.mapwrap{position:relative}
#atlas{cursor:crosshair}
.xhair{position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .2s}
.xhair.on{opacity:1}
.xh-h,.xh-v{position:absolute;top:0;left:0;display:block}
.xh-h{width:100%;height:0;border-top:1px dashed #c9563499}
.xh-v{width:0;border-left:1px dashed #c9563499}
.xh-read{position:absolute;top:8px;right:10px;padding:3px 6px;border:1px solid var(--line);background:var(--white);color:var(--rust-text);font:var(--t-label)/1 var(--font-mono);letter-spacing:.08em;font-variant-numeric:tabular-nums}

/* Drawer morph */
.xp.xp-morph{transition:none!important}
.xp-ghost{position:fixed;z-index:61;border:1px solid var(--rust);background:var(--paper);box-shadow:0 20px 50px #1f2a2740;pointer-events:none}

/* Copy-email feedback */
.btn.is-copied{border-color:var(--rust-strong);color:var(--rust-text)}

@media print{.rail,.xhair,.rev-cloud,.on-map,.rev-flag{display:none!important}}
