/* PULSE — illustrative portal motion. All sample data; no live requests.
   The site controller adds .is-playing only when motion is enabled and visible. */
.pulse-motion{position:relative;isolation:isolate;--pulse-duration:7s;--pulse-ink:#c4f0d1}
.pulse-motion .pulse-content{position:relative;min-width:0}
.pulse-motion .pulse-nav{gap:8px}
.pulse-motion .pulse-nav>b{position:relative;margin-bottom:13px}
.pulse-brand-dot{width:3px;height:3px;margin-left:auto;background:#86cfa0;border-radius:50%}
.pulse-motion .pulse-nav>span{display:flex;align-items:center;gap:5px;white-space:nowrap}
.pulse-nav-icon{display:inline-block;width:9px;color:#92b29e}
.pulse-nav-count{position:relative;margin-left:auto;display:block;width:12px;height:12px;border-radius:3px;background:#20392a;color:#aed9bc;font-size:6px;font-style:normal;text-align:center;line-height:12px}
.pulse-nav-count>span{position:absolute;inset:0}
.pulse-role{display:flex;gap:5px;align-items:center;margin-top:auto;padding:9px 0;border-top:1px solid #2b4033;color:#a3bdac;font-size:5.5px}
.pulse-role>svg{width:12px;height:12px;flex:none;fill:none;stroke:#8bb49a;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round}
.pulse-role small{display:block;font-size:5px;margin-top:3px;color:#71967d}
.pulse-motion .pulse-profile{margin-top:0;padding-top:3px}
.pulse-motion .pulse-profile>i{border:2px solid #263e2d;font-size:5.5px}
.pulse-motion .pulse-profile-menu{margin-left:auto;color:#88a690}
.pulse-motion .pulse-top{padding-bottom:10px}
.pulse-slash{color:#506b59;margin:0 5px}
.pulse-demo-label{display:flex;align-items:center;gap:4px;padding:3px 5px;border:1px solid #395644;border-radius:3px;color:#a4c6af;font-size:5px;line-height:1.2}
.pulse-demo-label>i{width:3px;height:3px;border-radius:50%;background:#a8d7b7}
.pulse-motion .pulse-greeting{padding:11px 0 12px}
.pulse-motion .pulse-greeting h4{font-size:21px;margin:5px 0}
.pulse-motion .pulse-stats{gap:9px}
.pulse-motion .pulse-stats>div{position:relative;height:69px;overflow:hidden;background:#15261c;border-color:#354d3d}
.pulse-motion .pulse-stats b{font-size:23px;margin-top:5px}
.pulse-motion .pulse-stats .pulse-counter{position:relative;display:block;width:42px;height:28px;font:inherit;color:var(--pulse-ink);line-height:28px;letter-spacing:-.03em;overflow:hidden}
.pulse-motion .pulse-stats .pulse-counter>span{position:absolute;inset:0;font:inherit;color:inherit}
.pulse-motion .pulse-stat-trend{font-size:13px;align-self:flex-start;margin-top:0;color:#709d7e}
.pulse-stat-chart{position:absolute;right:8px;bottom:9px;width:46%;height:24px;overflow:visible;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.pulse-chart-grid{stroke:#294334;stroke-width:.7}
.pulse-chart-track{stroke:#335641}
.pulse-chart-line{stroke:#c0ebcd;stroke-dasharray:100;stroke-dashoffset:100;animation-name:pulse-chart-draw}
.pulse-chart-dot{fill:#c0ebcd;stroke:none;opacity:0;animation-name:pulse-chart-point}
.pulse-motion .pulse-approval-mark{width:25px;height:25px;display:block;font-size:inherit}
.pulse-approval-mark svg{width:100%;height:100%;fill:none;stroke:#60826b;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round}
.pulse-check-path{stroke:#b8e6c5;stroke-width:1.5;stroke-dasharray:100;stroke-dashoffset:100;animation-name:pulse-check-draw}
.pulse-motion .pulse-stat-caption{position:absolute;left:10px;bottom:6px;font-size:4.5px;color:#7d9e87}
.pulse-motion .pulse-project{position:relative;margin-top:10px;padding:10px;background:#15271d;overflow:hidden}
.pulse-motion .pulse-project strong{display:flex;align-items:center;gap:5px;white-space:nowrap;font-size:8px}
.pulse-project-symbol{display:grid;place-items:center;width:16px;height:16px;font-size:7px;font-style:normal;color:#c9e7d2;border:1px solid #496953;border-radius:4px;background:#294433}
.pulse-motion .pulse-tag{display:block;position:relative;width:62px;height:14px;flex:none;padding:0;font-size:5px;text-align:center;line-height:14px;border:1px solid #3b6349;background:#254130;color:#bde8c7}
.pulse-tag>span{position:absolute;inset:0;white-space:nowrap}
.pulse-motion .pulse-project>p{margin-top:7px;color:#8ea696;font-size:5.5px}
.pulse-motion .pulse-progress{height:4px;margin:10px 0 7px;background:#2a4534}
.pulse-motion .pulse-progress>span{width:68%;background:#bceccc;animation-name:pulse-progress-update;box-shadow:0 0 7px #a2d8b326}
.pulse-progress-caption,.pulse-progress-number{position:relative;display:block;height:8px;line-height:8px}
.pulse-progress-caption{min-width:140px}
.pulse-progress-number{min-width:25px;text-align:right;font-variant-numeric:tabular-nums}
.pulse-progress-caption>span,.pulse-progress-number>span{position:absolute;inset:0;white-space:nowrap}
.pulse-progress-caption i{color:#bbe9c8;font-style:normal;margin-left:3px}
.pulse-motion .pulse-files{margin-top:10px;padding:0 1px}
.pulse-motion .pulse-files>span{display:flex;align-items:center;gap:5px;color:#b2c6b8}
.pulse-files svg{width:10px;height:10px;fill:none;stroke:#769982;stroke-width:1.1;stroke-linecap:round;stroke-linejoin:round}
.pulse-file-state{position:relative;display:block;width:60px;height:8px;text-align:right;font-size:4.5px!important;color:#87af94!important}
.pulse-file-state>span{position:absolute;inset:0;white-space:nowrap}
.pulse-update-toast{position:absolute;z-index:3;right:13px;top:37px;display:flex;align-items:center;gap:7px;padding:8px 10px;background:#d0ebd8;border:1px solid #effaf2;border-radius:5px;color:#203b29;box-shadow:0 9px 22px #07130cb3;font-size:6px;font-weight:600;opacity:0;transform:translateY(-8px);animation-name:pulse-project-toast;pointer-events:none}
.pulse-update-toast small{display:block;margin-top:2px;color:#567260;font-size:5px;font-weight:400}
.pulse-update-toast>i{margin-left:7px;font-style:normal;font-size:8px;color:#487253}
.pulse-toast-icon{display:grid;place-items:center;width:19px;height:19px;flex:none;border:1px solid #afcfba;border-radius:5px;background:#bedec8;font-size:13px;font-weight:400}
.pulse-loop-line{position:absolute;bottom:0;left:0;width:100%;height:1px;background:#a9dcbc;transform-origin:left;transform:scaleX(0);opacity:.55;animation-name:pulse-loop-progress}
.pulse-phase-before{animation-name:pulse-project-before}
.pulse-phase-after{opacity:0;animation-name:pulse-project-after}
.pulse-approval-before{animation-name:pulse-approval-before}
.pulse-approval-after{opacity:0;animation-name:pulse-approval-after}
.pulse-motion .pulse-anim{animation-duration:var(--pulse-duration);animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-play-state:paused}
.pulse-motion.motion-scene.is-playing .pulse-anim{animation-play-state:running}
@keyframes pulse-project-toast{0%,12%,49%,100%{opacity:0;transform:translateY(-8px)}18%,43%{opacity:1;transform:translateY(0)}}
@keyframes pulse-project-before{0%,18%,98%,100%{opacity:1;transform:translateY(0)}24%,91%{opacity:0;transform:translateY(-5px)}}
@keyframes pulse-project-after{0%,18%,98%,100%{opacity:0;transform:translateY(5px)}24%,91%{opacity:1;transform:translateY(0)}}
@keyframes pulse-approval-before{0%,50%,98%,100%{opacity:1;transform:translateY(0)}56%,91%{opacity:0;transform:translateY(-4px)}}
@keyframes pulse-approval-after{0%,50%,98%,100%{opacity:0;transform:translateY(4px)}56%,91%{opacity:1;transform:translateY(0)}}
@keyframes pulse-progress-update{0%,48%,100%{width:68%}65%,91%{width:82%}}
@keyframes pulse-chart-draw{0%,10%,100%{stroke-dashoffset:100;opacity:.8}50%,91%{stroke-dashoffset:0;opacity:1}96%{stroke-dashoffset:0;opacity:0}}
@keyframes pulse-chart-point{0%,46%,96%,100%{opacity:0}53%,90%{opacity:1}}
@keyframes pulse-check-draw{0%,49%,100%{stroke-dashoffset:100;opacity:1}60%,90%{stroke-dashoffset:0;opacity:1}96%{stroke-dashoffset:0;opacity:0}}
@keyframes pulse-loop-progress{0%{transform:scaleX(0);opacity:.3}91%{transform:scaleX(1);opacity:.55}96%,100%{transform:scaleX(1);opacity:0}}
@media(min-width:641px){
  .case-portal .pulse-motion .pulse-nav{gap:12px}
  .case-portal .pulse-motion .pulse-nav>b{margin-bottom:17px}
  .case-portal .pulse-motion .pulse-nav>span{gap:8px}
  .case-portal .pulse-motion .pulse-nav-count{width:16px;height:16px;font-size:8px;line-height:16px}
  .case-portal .pulse-motion .pulse-role{font-size:8px;padding:13px 0;gap:7px}
  .case-portal .pulse-role>svg{width:16px;height:16px}
  .case-portal .pulse-role small{font-size:6px}
  .case-portal .pulse-motion .pulse-profile{padding-top:0}
  .case-portal .pulse-motion .pulse-profile>i{width:25px;height:25px;font-size:7px}
  .case-portal .pulse-demo-label{font-size:7px;padding:4px 7px}
  .case-portal .pulse-motion .pulse-greeting{padding:16px 0}
  .case-portal .pulse-motion .pulse-greeting h4{font-size:30px;margin:6px 0}
  .case-portal .pulse-motion .pulse-stats>div{height:86px;padding:12px}
  .case-portal .pulse-motion .pulse-stats b{font-size:31px;margin-top:7px}
  .case-portal .pulse-motion .pulse-stats .pulse-counter{width:52px;height:38px;line-height:38px}
  .case-portal .pulse-stat-chart{height:35px;bottom:13px;right:13px;width:48%}
  .case-portal .pulse-motion .pulse-approval-mark{width:31px;height:31px;margin-right:4px}
  .case-portal .pulse-motion .pulse-stat-caption{font-size:6px;bottom:8px;left:12px}
  .case-portal .pulse-motion .pulse-project{padding:13px;margin-top:13px}
  .case-portal .pulse-motion .pulse-project strong{font-size:11px;gap:8px}
  .case-portal .pulse-project-symbol{width:20px;height:20px;font-size:9px}
  .case-portal .pulse-motion .pulse-tag{width:85px;height:20px;font-size:7px;line-height:20px}
  .case-portal .pulse-motion .pulse-project>p{font-size:8px;margin-top:8px}
  .case-portal .pulse-motion .pulse-progress{margin:12px 0 9px;height:5px}
  .case-portal .pulse-progress-caption,.case-portal .pulse-progress-number{height:11px;line-height:11px}
  .case-portal .pulse-progress-caption{min-width:180px}
  .case-portal .pulse-progress-number{min-width:35px}
  .case-portal .pulse-motion .pulse-files{margin-top:13px}
  .case-portal .pulse-files svg{width:13px;height:13px}
  .case-portal .pulse-file-state{width:86px;height:11px;font-size:6px!important}
  .case-portal .pulse-update-toast{top:48px;right:25px;padding:11px 13px;gap:9px;font-size:9px}
  .case-portal .pulse-update-toast small{font-size:7px}
  .case-portal .pulse-toast-icon{width:25px;height:25px;font-size:17px}
}
@media(max-width:640px){
  .pulse-preview{padding:18px;align-items:center}
  .case-portal{padding:22px 15px}
  .pulse-app.pulse-motion,.case-portal .pulse-app.pulse-motion{width:100%;min-width:0;height:300px;grid-template-columns:76px minmax(0,1fr);transform:rotate(-2deg);transform-origin:center}
  .project-card:hover .pulse-app.pulse-motion{transform:rotate(0deg)}
  .pulse-motion .pulse-nav{padding:18px 8px;gap:8px}
  .pulse-motion .pulse-nav>b{font-size:9px;gap:4px;margin-bottom:10px}
  .pulse-motion .pulse-nav>b>i{width:6px;height:10px}
  .pulse-motion .pulse-nav>span{font-size:6px;padding:6px 3px;gap:3px}
  .pulse-nav-icon{width:7px}
  .pulse-nav-count{width:10px;height:10px;line-height:10px;font-size:5px}
  .pulse-motion .pulse-role{gap:4px;font-size:4.8px;line-height:1.4;padding:8px 0}
  .pulse-role>svg{width:10px;height:10px}
  .pulse-role small{font-size:4.5px}
  .pulse-motion .pulse-profile{gap:4px}
  .pulse-motion .pulse-profile>i{width:17px;height:17px;flex:none;font-size:5px}
  .pulse-motion .pulse-profile>span{font-size:5px}
  .pulse-motion .pulse-profile small{font-size:4px;white-space:nowrap}
  .pulse-motion .pulse-profile-menu{display:none}
  .pulse-motion .pulse-content{padding:16px 10px}
  .pulse-motion .pulse-top{font-size:5px;gap:4px;padding-bottom:10px}
  .pulse-slash{margin:0 2px}
  .pulse-demo-label{font-size:4.3px;padding:3px 4px;gap:3px;white-space:nowrap}
  .pulse-motion .pulse-greeting{padding:13px 0}
  .pulse-motion .pulse-greeting h4{font-size:17px;margin:5px 0 7px;white-space:nowrap}
  .pulse-motion .pulse-greeting>small{font-size:4.5px}
  .pulse-motion .pulse-greeting>span{display:block;font-size:5px;line-height:1.5}
  .pulse-motion .pulse-stats{gap:6px}
  .pulse-motion .pulse-stats>div{height:62px;padding:8px}
  .pulse-motion .pulse-stats span{font-size:5px}
  .pulse-motion .pulse-stats b{font-size:21px;margin-top:4px}
  .pulse-motion .pulse-stats .pulse-counter{width:34px;height:26px;line-height:26px;font-size:21px}
  .pulse-motion .pulse-stats .pulse-counter>span{font:inherit}
  .pulse-motion .pulse-stat-trend{font-size:10px}
  .pulse-stat-chart{right:5px;bottom:10px;width:35%;height:20px}
  .pulse-motion .pulse-approval-mark{width:19px;height:19px}
  .pulse-motion .pulse-stat-caption{font-size:3.8px;left:8px;bottom:5px}
  .pulse-motion .pulse-project{padding:8px;margin-top:9px}
  .pulse-motion .pulse-project strong{font-size:6px;gap:4px}
  .pulse-project-symbol{width:13px;height:13px;font-size:6px}
  .pulse-motion .pulse-tag{width:52px;height:13px;font-size:4px;line-height:13px}
  .pulse-motion .pulse-project>p{font-size:4.5px;margin-top:7px}
  .pulse-motion .pulse-progress{margin:9px 0 7px}
  .pulse-motion .pulse-project-foot{font-size:4.5px}
  .pulse-progress-caption{min-width:0;flex:1}
  .pulse-progress-number{min-width:23px}
  .pulse-motion .pulse-files{font-size:5px;margin-top:10px;gap:3px}
  .pulse-files svg{width:9px;height:9px}
  .pulse-motion .pulse-files>span{gap:3px;white-space:nowrap}
  .pulse-file-state{font-size:4px!important;width:44px}
  .pulse-update-toast{right:7px;top:38px;padding:7px;gap:5px;font-size:5px}
  .pulse-update-toast small{font-size:4px}
  .pulse-toast-icon{width:16px;height:16px;font-size:11px}
}
@media(prefers-reduced-motion:reduce){
  .pulse-motion .pulse-anim,.pulse-motion.motion-scene.is-playing .pulse-anim{animation:none!important}
  .pulse-motion .pulse-chart-line{stroke-dashoffset:0}
  .pulse-motion .pulse-chart-dot{opacity:1}
  .pulse-motion .pulse-update-toast,.pulse-motion .pulse-loop-line{display:none}
}
