/* The upgrade is the focal point; workspace motion stays intentionally quiet. */
.upgrade-button{
  background:linear-gradient(115deg,#75d2ff,#bcecff 56%,#79d2ff);
  border-color:#c8f1ff;
  font-weight:700;
  box-shadow:0 0 0 3px #6dd2ff24,0 0 27px #4bc4ff70;
  animation:pro-spotlight 3.6s ease-in-out infinite;
}
.upgrade-button>span{position:relative;z-index:2}
.upgrade-button:before{
  inset:-3px;padding:3px;
  background:conic-gradient(from var(--upgrade-angle),#55c8ff38 0deg,#55c8ff38 190deg,#79dcff 245deg,#fff 280deg,#a5e9ff 315deg,#55c8ff38 360deg);
  animation:upgrade-border-travel 3.6s linear infinite;
}
.upgrade-button:after{
  content:"";position:absolute;z-index:1;inset:0;border-radius:inherit;
  background:linear-gradient(110deg,transparent 27%,#fff8 47%,#fff2 55%,transparent 72%);
  background-size:250% 100%;background-position:200% 0;pointer-events:none;
  animation:pro-shine 5.4s ease-in-out infinite;
}
.upgrade-button:hover,.upgrade-button:focus-visible{
  background:#c5efff;
  box-shadow:0 0 0 4px #86deff38,0 0 40px #61ceff9c;
  animation-play-state:paused;
}
.upgrade-button:hover:before,.upgrade-button:focus-visible:before,
.upgrade-button:hover:after,.upgrade-button:focus-visible:after{animation-play-state:paused}
@keyframes pro-spotlight{
  0%,100%{box-shadow:0 0 0 2px #6dd2ff20,0 0 22px #4bc4ff55;transform:translateY(0) scale(1)}
  50%{box-shadow:0 0 0 8px #6dd2ff18,0 0 43px #5acbffb3,0 6px 22px #051b3638;transform:translateY(-1px) scale(1.025)}
}
@keyframes pro-shine{0%,56%{background-position:200% 0}82%,100%{background-position:-200% 0}}

/* Nexi-inspired short fades, scaled down for a working dashboard. */
.upgrade-price{display:flex;align-items:center;gap:8px;margin:0 0 13px;white-space:nowrap}
.upgrade-price .price-currency{display:block;align-self:flex-start;margin-top:7px;color:#e0f4ff;font-size:17px;font-weight:600;letter-spacing:.3px;line-height:1.2}
.upgrade-price .price-amount{display:inline-flex;overflow:hidden;font-size:57px;font-weight:500;line-height:1.02;letter-spacing:-2.7px;color:white}
.upgrade-price .price-period{display:block;color:#c5dfef;font-size:14px;line-height:1.3;white-space:normal;margin:3px 0 0 2px}
.price-digit{display:inline-block}
.is-revealed .price-digit{animation:price-settle .75s cubic-bezier(.18,.75,.3,1) both}
.is-revealed .price-digit:nth-child(2){animation-delay:90ms}
.pro-value{border-left:2px solid #62c9ff;padding-left:9px;margin-bottom:19px;max-width:210px;line-height:1.4}
.pro-value strong{display:block;color:#c2edff;font-size:14px;font-weight:500;letter-spacing:-.1px}
.pro-value>span{display:block;color:#a9c8dc;font-size:12px;line-height:1.5;margin-top:4px}
.is-revealed .pro-value{animation:value-arrive .6s .4s ease both}
@keyframes price-settle{from{opacity:0;transform:translateY(95%)}to{opacity:1;transform:none}}
@keyframes value-arrive{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}
.motion-section{opacity:0;transform:translateY(18px);transition:opacity .6s ease var(--section-delay,0ms),transform .6s cubic-bezier(.2,.7,.25,1) var(--section-delay,0ms)}
.motion-section.is-revealed{opacity:1;transform:none}
.assessment-setup .upload-panel{transition:border-color .3s,box-shadow .3s}
.history-panel{transition:border-color .3s,box-shadow .3s,opacity .6s ease var(--section-delay,0ms),transform .6s cubic-bezier(.2,.7,.25,1) var(--section-delay,0ms)}
.assessment-setup .upload-panel:hover,.assessment-setup .upload-panel:focus-within{border-color:#9bc9e3;box-shadow:0 8px 30px #173c5b09}
.history-panel:hover,.history-panel:focus-within{border-color:#aacfe3;box-shadow:0 8px 26px #173c5b08}
.dropzone{transition:background .3s,border-color .3s,box-shadow .3s}
.dropzone:hover{background:#f2faff;border-color:#85bedf}
.assessment-setup .upload-visual{
  position:relative;grid-column:1;grid-row:1/4;display:grid;place-items:center;
  width:58px;height:65px;margin-left:-3px;border:1px solid #bedcec;border-radius:13px;
  background:linear-gradient(150deg,#e5f5ff,#f8fcff);overflow:hidden;
  box-shadow:inset 0 1px #fff,0 5px 14px #258ac90a;
  animation:upload-drift 4s ease-in-out infinite alternate;
}
.assessment-setup .upload-visual .upload-icon{width:37px;height:37px;margin:0;stroke:#308ebf;position:relative;z-index:1}
.upload-scan-line{
  position:absolute;z-index:2;left:6px;right:6px;top:9px;height:1px;
  background:linear-gradient(90deg,transparent,#43b4ec,transparent);
  box-shadow:0 0 9px #35adf050;opacity:0;
  animation:upload-sweep 5.5s ease-in-out infinite;
}
.upload-scan-line:after{content:"";position:absolute;left:0;right:0;top:-9px;height:9px;background:linear-gradient(transparent,#51b9ed1c)}
.is-scanning .dropzone{border-color:#2ca2df;background:#eff9ff;box-shadow:inset 0 0 24px #2ca2df0c}
.is-scanning .upload-scan-line{animation-duration:1s}
.is-scanning .upload-visual{animation:none;box-shadow:0 0 20px #2ca2df24}
.is-scanning #progress-fill{background:linear-gradient(90deg,#2ca2df,#8fe0ff,#2ca2df);background-size:200% 100%;animation:scan-progress-flow 1.5s linear infinite}
.source-tabs button{transition:color .25s}
.source-tabs button:after{transition:background .25s}
.source-tabs button:hover{color:#1d709f}
.text-button>span,.compare-plans>span,.run-row .button>span{transition:transform .25s}
.text-button:hover>span,.compare-plans:hover>span,.run-row .button:hover>span{transform:translateX(3px)}
.history-table tbody tr{animation:history-arrive .45s ease both}
.history-table tbody tr:nth-child(2){animation-delay:60ms}
.recent-result:not([hidden]){animation:history-arrive .45s ease both}
.results:not([hidden]) .finding-card{animation:history-arrive .5s ease both}
.results:not([hidden]) .finding-card:nth-child(2){animation-delay:70ms}
@keyframes upload-drift{from{transform:translateY(2px)}to{transform:translateY(-2px)}}
@keyframes upload-sweep{0%,48%{transform:translateY(0);opacity:0}53%{opacity:.75}80%{opacity:.6}90%,100%{transform:translateY(46px);opacity:0}}
@keyframes scan-progress-flow{to{background-position:-200% 0}}
@keyframes history-arrive{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media screen and (max-width:650px){.assessment-setup .upload-visual{margin:0 0 10px}}
@media screen and (max-width:650px){
  .upgrade-actions{grid-template-columns:minmax(0,1fr) auto;gap:12px 15px}
  .upgrade-price{grid-column:1/-1;gap:9px;margin:0}
  .upgrade-price .price-amount{font-size:62px}
  .upgrade-price .price-currency{font-size:18px}
  .upgrade-price .price-period{font-size:15px}
  .pro-value{grid-column:1/-1;margin:1px 0 8px;max-width:none}
  .pro-value strong{font-size:15px}
  .pro-value>span{font-size:12px}
  .upgrade-actions .upgrade-button{grid-column:1/-1;width:100%;justify-content:space-between}
  .compare-plans{grid-column:1/-1}
}
@media(prefers-reduced-motion:reduce){
  .motion-section,.motion-section.is-revealed{opacity:1;transform:none;transition:none}
  .upgrade-button,.upgrade-button:before,.upgrade-button:after,.upload-visual,.upload-scan-line,.is-scanning #progress-fill,.history-table tbody tr,.recent-result,.results .finding-card,.price-digit,.pro-value{animation:none!important}
  .upgrade-button{transform:none;box-shadow:0 0 0 2px #6dd2ff24,0 0 24px #4bc4ff45}
  .upgrade-button:before{--upgrade-angle:295deg}
  .upgrade-button:after,.upload-scan-line{display:none}
  .text-button>span,.compare-plans>span,.run-row .button>span{transition:none;transform:none!important}
}
@media print{.motion-section{opacity:1;transform:none}}
